NooNoo
@NooNoo
Yep

Как сгенерировать объект с заданными свойствами?

Суть задачи:
screenshot.su/show.php?img=baa79487e6a1c25b63c8e5b...

Вопрос: я не имею представления,как должна выглядеть функция генерации подобного объекта.
Предполагается, что не нужно использовать цикл свойствам for..in.

Заранее благодарю!
  • Вопрос задан
  • 341 просмотр
Решения вопроса 2
loktionov129
@loktionov129
Backend .NET Developer
const random = (min, max) => Math.floor(Math.random() * (max - min) + min),

offerTitles = [
	"Большая уютная квартира",
	"Маленькая неуютная квартира",
	"Огромный прекрасный дворец",
	"Маленький ужасный дворец",
	"Красивый гостевой домик",
	"Некрасивый негостеприимный домик",
	"Уютное бунгало далеко от моря",
	"Неуютное бунгало по колено в воде"
],
shuffledOfferTitles = [...offerTitles].sort(() => Math.random() > 0.5),
types = ["flat", "house", "bungalo"],
checks = ["12:00", "13:00", "14:00"],
features = ["wifi", "dishwasher", "parking", "washer", "elevator", "conditioner"];

const result = [...Array(8).keys()].map((id) => ({
	author: {
		avatar: `img/avatars/user0${id + 1}.png`
    },
	offer: {
		title: shuffledOfferTitles[id],
		address: "location.x, location.y",
		price: random(1000, 1000000),
		type: types[random(0, types.length)],
		rooms: random(1, 5),
		guests: random(1, 9),
		checkin: checks[random(0, checks.length)],
		checkout: checks[random(0, checks.length)],
		features: ((rnd) => features.slice(random(0, rnd), random(rnd, features.length)))(random(0, features.length -1)),
		description: "",
		photos: []
    },
	location: {
		x: random(300, 900),
		y: random(100, 500)
    }
}));

5a1eb99b6e109939200749.png
Ответ написан
SnaIP
@SnaIP
Front-end разработчик
Написать функцию и вызвать ее через new это создаст объект по вашей схеме, простой пример:

function Cube(x, y) {
    this.x = x
    this.y = y
    this.randomNumber = Math.random()
}

new Cube(3, 5)

или же на es6 

class Cube {
   constructor(x,y) {
      // ...
   }
}

после складывать например в массив эту коллекцию

Додумывайте сами
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы