你可以
shuffle
阵列
myQuestions
通过呼叫
shuffle(myQuestions)
使用下面的shuffle函数(fisher-yates算法,从链接内的答案中复制)。
function shuffle(a) {
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}
语法:
shuffledArr = shuffle(arr);
然后按顺序显示(现在无序排列)。这将节省空间复杂性,否则必须处理已提出问题的列表。
与op对话后,以下是完整的重构代码:
https://jsfiddle.net/L0qzdhg0/4/
下面的示例代码段:
多次运行以查看不同的结果
function shuffle(a) {
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}
console.log(
shuffle(
[{
question: "Esimerkki kysymys1",
answers: {
a: "Oikein",
b: "Väärin"
},
correctAnswer: "a"
},
{
question: "Esimerkki kysymys2",
answers: {
a: "Oikein",
b: "Väärin"
},
correctAnswer: "b"
},
{
question: "Esimerkki kysymys3",
answers: {
a: "Oikein",
b: "Väärin"
},
correctAnswer: "a"
}
]
)
);