JavaScript中实现最高效的数组乱序
本文由 小茗同学 发表于 2016-08-22 浏览(3244)
最后修改 2016-08-22 标签:javascript 数组 乱序 打乱 shuffle array

本文内容参考自网络。

常规做法

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
array.sort(function(a, b){ return Math.random() > 0.5 ? -1 : 1;});

此方法虽直观,但效率并不高,经某网友测试,打乱10000个元素的数组,大概花了35ms左右。

高效做法

if (!Array.prototype.shuffle)
{
    Array.prototype.shuffle = function()
    {
        for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
        return this;
    };
}
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
array.shuffle();

此方法打乱一个10000个元素的数组时大约耗时7,8毫秒,把数组元素增加10倍到100000来测试,第一种方法费时500+ms左右,第二个方法耗时40ms左右,差别还是挺大的。