需求:需要对数组进行随机排序(例如洗牌等场景)
思路:利用数组的下标随机来实现
1.简单的随机排序
/**
* 数组排序
*
* @param {type} 1:从小到大 2:从大到小 3:随机
* @param {arr} 数组对象
*/
sortArray(arr, type = 1) {
return arr.sort((a, b) => {
switch (type) {
case 1:
return a - b;
case 2:
return b - a;
case 3:
return Math.random() - 0.5;
default:
return arr;
}
});
},
2.常用的Knuth洗牌算法
shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
},