原文:对数组洗牌 - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/javascript/shuffle-an-array/

这段代码运用了Fisher-Yates Shuffling算法对数组进行洗牌。

方法一:

比较简单的版本

[12,4,16,3].sort(function() {
    return 0.5 - Math.random();
});
//输出:[16, 12, 3, 4] 每次都不一样

方法二:

function shuffle(arr) {
    var i,
        j,
        temp;
    for (i = arr.length - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i + 1));
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    return arr;
};

调用示例:

var a = [1, 2, 3, 4, 5, 6, 7, 8];
var b = shuffle(a);
console.log(b);
// [2, 7, 8, 6, 5, 3, 1, 4]

扩展阅读: