简单方法
利用Array的sort方法的特性,以及Math.random()值的特点做简单的位置交换,来实现数组乱序。但这种方法并不能实现真正的随机乱序。
function shuffle(arr) {
return arr?.sort(() => Math.random() - 0.5);
}
准确高效(Fisher–Yates)
function shuffle(arr) {
let m = arr?.length;
while (m > 1){
let index = Math.floor(Math.random() * m--);
[arr[m] , arr[index]] = [arr[index] , arr[m]]
}
return arr;
}