「手写题」1、如何让一个数组快速乱序?

335 阅读1分钟

方法一:

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

方法二:

Fisher–Yates shuffle 洗牌算法

该方法就是每次在数组中随机产生一个位置,依次将数组中的每一项与该次产生的随机位置上的元素交换位置:


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