js洗牌算法:javascript数组随机打乱顺序的实现方法
有一个数组,我们需要通过js对数组的元素进行随机排序,然后输出,这其实就是洗牌算法,首页需要从元素中随机取一个和第一元进行交换,然后依次类推,直到最后一个元素。
Fisher-Yates算法
function randArr(arr){
for(var i=0;i<arr.length;i++){
var random = Math.floor(Math.random() * (i + 1));
[arr[i], arr[random]] = [arr[random], arr[i]];
}
return arr;
}它的实现步骤:生成1-arr.length长度之间的随机数random,把arr[random]和arr[i]的位置交换,然后重复上一步。直到i==arr.length的时候跳出循环。
利用sort排序
function randArr(arr){
arr.sort(function(){return Math.random()-0.5;});
return arr;
}sort排序是在原数组上进行排序,sort的主要思路是根据参数的正负来排序,我们这里取个随机数0~1,这个以0.5为分界线。
注意:sort如果不带参数,默认以“字母顺序”进行排序。
测试:
var arr=['a','b','c'];
console.log(randArr(arr));我们通过上面2种方法,都实现了数组顺序的随机打乱。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!