说起来 数组乱序,这是大厂经常考的一道题,考验的是对数组的操作。那么实现数组乱序,常见经典的解决方法有两种:

面试题十五:js/javascript数组乱序及洗牌算法_数组长度

1.sort() 

取巧排序 ,之所以说取巧,这是一种伪随机。当数组过多是, 随机性会变差!

原理:通过sort随机生成一个数,决定数组相邻两位的排序,直到数组排序结束。
 


function shuffle(arr){ return arr.sort(function(){ return Math.random()-0.5 }) }


 

2.洗牌算法 Fisher–Yates shuffle

原理:随机抽出数组里面的一个元素与最后一个元素换位置,直到排序完成(每次数组长度减一,到数组长度为空截止)。
 


function shuffle(arr){
var l = arr.length;
while(l>1){
let index = Math.floor(Math.randow() * l--);
[arr[index],arr[l]] = [arr[l],arr[index]];
}
return arr;
}


注意:这题很大程度上,是手写提,大家尽量理解其中的意思,然后记忆。加油,打工人!