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种方法,都实现了数组顺序的随机打乱。
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!