Я прошу прощения за плохо написанное название. Я не был уверен, как именно это написать. У меня есть массив. Мне нужно случайно получить три элемента из массива. Только один пункт может быть «рестораном», и ресторан может занимать ТОЛЬКО go на третьей позиции.
Позвольте мне объяснить на примере. Вот пример массива
el 1 - restaurant = false
el 2 - restaurant = true
el 3 - restaurant = true
el 4 - restaurant = false
el 5 - restaurant = false
el 6 - restaurant = false
el 7 - restaurant = true
el 8 - restaurant = false
el 9 - restaurant = false
Мой текущий код перебирает этот массив и случайным образом захватывает три элемента. Позиции 1 и 2 могут НИКОГДА не иметь ресторана в них, поэтому их нужно брать из предметов со свойством restaurant, установленным на false . 3-я позиция может иметь ресторан, но я не хочу, чтобы всегда был рестораном.
Вот мой текущий код:
const amountOfLocations = 3
// have list of locations
// shuffle it
for (let i = locations.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[locations[i], locations[j]] = [locations[j], locations[i]];
}
let selectedLocations = locations.slice(0, amountOfLocations)
Моя первоначальная мысль: мне нужно взять только 2 элемента из этого текущего l oop вместо 3, затем с помощью исходного массива удалить эти два элемента и снова перемешать массив, чтобы случайным образом получить еще один элемент, который затем будет размещены на 3-й позиции.