这段代码运用了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]
扩展阅读: