Код работает некорректно
Пробую сделать жеребьевки. Есть вопрос, как сделать чтобы в массиве выводилось не более 4 елемента и они не повторялись?
let england = ["Манчестер Сіті","Манчестер Юнайтед",'Лестер','Челсі' , 'Вест Хем ' , ' Тотенхем '];
let spain = ['Атлетіко', 'Барселона', 'Реал Мадрид', 'Севілья', 'Реал Сосьєдад','Бетис'];
let italy = ['Інтер', 'Мілан' , 'Ювентус' , 'Аталанта' , 'Наполі' , 'Рома' , 'Лаціо'];
let france = ['ПСЖ', 'Лілль' , 'Ліон' , 'Монако' , 'Ланс' , 'Марсель'];
let germany = ['Баварія', 'Боруссія Дортмунд', 'Лейпциг', 'Байер', 'Вольфсбург'];
function rnd(min, max) {
let rand = min - 0.5 + Math.random() * (max - min + 1);
return Math.round(rand);
}
var list = [];
list.push(england[rnd(0, england.length - 1)]);
list.push(spain[rnd(0, spain.length - 1)]);
list.push(italy[rnd(0, italy.length - 1)]);
list.push(france[rnd(0, france.length - 1)]);
list.push(ukraine[rnd(0, ukraine.length - 1)]);
list.push(germany[rnd(0, germany.length - 1)]);
console.log(list)
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
let england = ["Манчестер Сіті","Манчестер Юнайтед",'Лестер','Челсі' , 'Вест Хем ' , ' Тотенхем '];
let spain = ['Атлетіко', 'Барселона', 'Реал Мадрид', 'Севілья', 'Реал Сосьєдад','Бетис'];
let italy = ['Інтер', 'Мілан' , 'Ювентус' , 'Аталанта' , 'Наполі' , 'Рома' , 'Лаціо'];
let france = ['ПСЖ', 'Лілль' , 'Ліон' , 'Монако' , 'Ланс' , 'Марсель'];
let germany = ['Баварія', 'Боруссія Дортмунд', 'Лейпциг', 'Байер', 'Вольфсбург'];
let maxTeamsCount = 4;
let allTeams = [...england,...spain, ...italy, ...france, ...germany];
let allTeamsShuffled = allTeams.sort(() => Math.random() - 0.5);
let list = allTeamsShuffled.slice(0, maxTeamsCount);
console.log(list);
???
let list = [];
let maxTeamsCount = 4;
let countriesTeams = [
{ england: ["Манчестер Сіті","Манчестер Юнайтед",'Лестер','Челсі' , 'Вест Хем ' , ' Тотенхем '] },
{ spain: ['Атлетіко', 'Барселона', 'Реал Мадрид', 'Севілья', 'Реал Сосьєдад','Бетис'] },
{ italy: ['Інтер', 'Мілан' , 'Ювентус' , 'Аталанта' , 'Наполі' , 'Рома' , 'Лаціо'] },
{ france: ['ПСЖ', 'Лілль' , 'Ліон' , 'Монако' , 'Ланс' , 'Марсель'] },
{ germany: ['Баварія', 'Боруссія Дортмунд', 'Лейпциг', 'Байер', 'Вольфсбург'] }
];
let shuffle = (arr, count) => arr.sort(() => Math.random() - 0.5);
let shuffledCountriesTeams = countriesTeams.sort(() => Math.random() - 0.5);
let shuffledCountriesTeamsCut = shuffle(countriesTeams, maxTeamsCount).slice(0, maxTeamsCount);
for (const value of Object.values(shuffledCountriesTeamsCut)) {
let team = shuffle(Object.values(value)[0], 1).shift();
list.push(team);
}
console.log(list);