我正在尝试从数组 item[] 中选择一个九个数字项目,该项目已打乱且没有重复项。
但我的代码选择了超过九个,并且有重复
我如何将其更改为只有九个,没有重复并且
怎么可能
我必须做出什么改变才能使其成为可能?
window.onload = rnumber();
function rnumber() {
const
items = [
{ label: '1', url: '1.jpg' },
{ label: '2', url: '2.jpg' },
{ label: '3', url: '3.jpg' },
{ label: '4', url: '4.jpg' },
{ label: '5', url: '5.jpg' },
{ label: '6', url: '6.jpg' },
{ label: '7', url: '7.jpg' },
{ label: '8', url: '8.jpg' },
{ label: '9', url: '9.jpg' },
{ label: '10',url: '10.jpg' }
];
var lastnumber=0;
for (let index = 0; index < 9; index++)
{
randomIndex = Math.floor(Math.random() * items.length);
if(lastnumber!=randomIndex)
{
item = items[randomIndex];
lastnumber=randomIndex;
console.log(item);
}
else
{
rnumber();
}
}
}
最佳答案
您需要选择不替换的项目。您可以在选择项目时从 items
数组中删除随机选择的项目:
window.onload = rnumber();
function rnumber() {
const items = [
{ label: '1', url: '1.jpg' },
{ label: '2', url: '2.jpg' },
{ label: '3', url: '3.jpg' },
{ label: '4', url: '4.jpg' },
{ label: '5', url: '5.jpg' },
{ label: '6', url: '6.jpg' },
{ label: '7', url: '7.jpg' },
{ label: '8', url: '8.jpg' },
{ label: '9', url: '9.jpg' },
{ label: '10',url: '10.jpg' }
];
const randItems = Array.from(
{ length: 9 },
() => {
const randomIndex = Math.floor(Math.random() * items.length);
const [item] = items.splice(randomIndex, 1);
return item;
}
);
console.log(randItems);
}
请注意,这将改变原始items
数组。如果您想保留它(就像一副可以稍后重复使用的牌),请先将其切片以进行复制,然后对切片副本进行变异;
const slicedItems = items.slice();
// ...
const randomIndex = Math.floor(Math.random() * slicedItems.length);
const [item] = slicedItems.splice(randomIndex, 1);
关于javascript - 从 items[] 数组中选择九个已打乱顺序且不重复的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52380397/