如何随机打乱一个js数组?

例如一个数组为[3, 3, 6, 0, 6],现在想让该数组内部随机打乱,例如变成如下形式

[6, 0, 6, 3, 3]

由于js本身没有shuffle方法,所以就要自己实现一个shuffle方法来达到这个目的。

/**
 * Shuffles array in place.
 * @param {Array} a items The array containing the items.
 */
function shuffle(a) {
    var j, x, i;
    for (i = a.length; i; i--) {
        j = Math.floor(Math.random() * i);
        x = a[i - 1];
        a[i - 1] = a[j];
        a[j] = x;
    }
}

ES6的写法

/**
 * Shuffles array in place. ES6 version
 * @param {Array} a items The array containing the items.
 */
function shuffle(a) {
    for (let i = a.length; i; i--) {
        let j = Math.floor(Math.random() * i);
        [a[i - 1], a[j]] = [a[j], a[i - 1]];
    }
}

然后这样使用

var myArray = ['1','2','3','4','5','6','7','8','9'];
shuffle(myArray);

此时的myArray已经被重新打乱了。

文章参考自:https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注