本文内容参考自网络。
常规做法
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左右,差别还是挺大的。