的演示plunker
jsfiddle
var test = [1, 2, 3, 4, 5]
var Quiz = [];
for (var i=0; i<5; i++){
shuffle(test)
Quiz[i] = {
options: [],
correct: Math.floor((Math.random() * 5) + 1)
};
for(quizS of Quiz){
quizS.options.push = test
}
}
console.log(Quiz);
function shuffle(arra1){
var ctr = arra1.length, temp, index;
while (ctr > 0) {
index = Math.floor(Math.random() * ctr);
ctr--;
temp = arra1[ctr];
arra1[ctr] = arra1[index];
arra1[index] = temp;
}
return arra1;
}
因此,我试图通过for循环创建一个数组(QUIZ(,在该循环中,每个数组都有从某个数组(test(中的随机顺序。我在控制台日志中得到的是所有数组中相同的随机顺序。如何为每个单独的数组随机化/洗牌?
这是您所需的解决方案:
您必须克隆阵列以分配它,而无需更改原始数组
使用, slice(0)
到克隆数组。
var a = shuffle(test).slice(0)
var test = [1, 2, 3, 4, 5]
var Quiz = [];
var random = {};
function shuffle(arra1) {
var ctr = arra1.length, temp, index;
while (0 !== ctr) {
index = Math.floor(Math.random() * ctr);
ctr -= 1
temp = arra1[ctr];
arra1[ctr] = arra1[index];
arra1[index] = temp;
}
return arra1;
}
for (var i = 0; i < 5; i++) {
var a = shuffle(test).slice(0)
Quiz.push({
options: a,
riktig: Math.floor((Math.random() * 5) + 1)
});
}
console.log(Quiz);
请运行上面的摘要
这是相同