美文网首页一入前端坑似海Web前端之路让前端飞
JavaScript-如何实现数组的随机排序?

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

作者: YukiYang | 来源:发表于2017-02-27 19:59 被阅读68次

    第一种方法。

    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);
    
    第三种方法结果

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

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

    相关文章

      网友评论

        本文标题:JavaScript-如何实现数组的随机排序?

        本文链接:https://www.haomeiwen.com/subject/gnxtgttx.html