最有效的阵列洗牌器

Ada*_*nch 5 javascript arrays performance shuffle

如何以最有效的方式对数组的值进行洗牌?

每个元素只是一个包含HTML的字符串.

ale*_*lex 6

你有几个选择.

首先,你可以使用愚蠢的天真分拣机......

arr = arr.sort(function() {
    return Math.random() - .5
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

这很快,很脏但通常被认为是不好的做法.

进一步阅读.

最好的随机排序的方式Array是与费雪耶茨洗牌.

var newArr = [];

while (arr.length) {

   var randomIndex = Math.floor(Math.random() * arr.length),
       element = arr.splice(randomIndex, 1)

   newArr.push(element[0]);       

}
Run Code Online (Sandbox Code Playgroud)

JSBin.