我在一个数组中有30个对象。每个对象中的属性之一是question_order
。我想做一个JavaScript函数,给对象一个顺序。为此,我需要为每个对象的属性question_order
赋予1-30的数字,并且每个question_order
数必须是唯一的。最好的方法是什么?谢谢!
1 个答案:
答案 0 :(得分:0)
您可以创建一个索引数组,如果有则改组。然后,您可以遍历您的项目并根据改组后的数组分配一个question_order:
函数shuffle(array){
var index = array.length;
而(--index> 0){
让randIndex = Math.floor(Math.random()* index);
[array [index],array [randIndex]] = [array [randIndex],array [index]];
}
返回数组;
}
让项目= [
{name:0},
{name:1},
{name:2},
{name:3},
{名称:4}
]
//创建一个索引arr,即[0,1,2,3]与项的长度相同
让索引= shuffle(Array.from({length:items.length},(_,i)=> i))
//添加问题顺序
items.forEach((item,index)=> item.question_order = indexs [index])
console.log(项目)
但是,如果您已经可以重新整理数组,为什么不整理一下原来的数组并为自己节省额外的工作:
函数shuffle(array){
var index = array.length;
而(--index> 0){
让randIndex = Math.floor(Math.random()* index);
[array [index],array [randIndex]] = [array [randIndex],array [index]];
}
返回数组;
}
让项目= [
{name:0},
{name:1},
{name:2},
{name:3},
{名称:4}
]
console.log(随机播放(项目))