JavaScript-如何实现数组的随机排序?

第一种方法。

Math.random()返回介于 0(包含) ~ 1(不包含) 之间的一个随机数。

这种方法是循环过程中通过Math.random()函数产生的随机值,在数组中这个随机值位置的数和arr[i]位置的数据交换,循环结束,产生随机数组。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function randSort1(arr) {
    for(var i = 0, len = arr.length; i < len; i++) {
        var rand = parseInt(Math.random() * len);
        var temp = arr[rand];
        arr[rand] = arr[i];
        arr[i] = temp;
    }
    return arr;
}

console.log(randSort1(arr));

第一种方法结果


第二种方法。

splice() 方法用于插入、删除或替换数组的元素。
注意:这种方法会改变原始数组!。

第二种办法,建立一个新的空数组,并通过Math.random()随机得到小于数组长度的randomIndex,把原数组中的arr[randomIndex]有序的放到新数组中。同时通过arr.splice(randomIndex, 1)把刚放到新数组中的数据删除。以此类推,直至arr中没有数据产生新的随机数组。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function randSort2(arr) {
    var mixedArray = [];
    while(arr.length > 0) {
        var randomIndex = parseInt(Math.random() * arr.length);
        mixedArray.push(arr[randomIndex]);
        arr.splice(randomIndex, 1);
    }
    return mixedArray;
}

console.log(randSort2(arr));

第二种方法结果


第三种方法。

sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。当不带参数的时候默认排序顺序为按字母升序。

可以看出Math.random()得到的是0~1之间的随机数。众所周知,sort()可以调用一个函数做为参数,如果这个函数返回的值为-1表示数组中的a项排在b项前。如此一来,可以写一个随机函数,让Math.random()随机出来的数与0.5做为一个比较,如果大于.5就返回 -1(a排在b前面),反之返回1(b排在a前面)。


var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.sort(function() {
    return Math.random() - 0.5;
})
console.log(arr);

第三种方法结果


文章仅为个人学习观点,如有错误,还请各位朋友指导,我将不胜感激。
与此同时写文章时参考了一些博文资料,如有侵权请立即与我联系解决,并表示非常抱歉!

谢谢你长的那么美,并看了我的文章~

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值