简单random
function shuffle(arr) {
arr.sort(() => Math.random - 0.5)
}
Fisher–Yates算法
这是一种用于打乱数组顺序的常见算法。
该算法的基本思想
- 从数组的末尾开始,随机选取一个元素并交换位置
- 再从数组的前面选取一个元素并交换位置
- 以此类推。
function shuffle(arr) {
let curIndex = arr.length
let randomIndex
while(curIndex){
// 生成随机索引
randomIndex = Math.floor(Math.random() * curIndex)
curIndex--
// 交换位置
[arr[curIndex], arr[randomIndex]] = [arr[randomIndex], arr[curIndex]]
}
return arr
}