shuffle算法-洗牌算法
算法的作用
打乱顺序
算法的实现
等概率的抽取数组中的每一个数,跟最后一个元素交换
// 使用闭包,防止变量污染
(function() {
function shuffle() {
// 调用形式: arr.shuffle(); 这里的this指向Array实例
let arr = this;
for (let i = arr.length; i >= 0; --i) {
let randomIndex = Math.floor(Math.random() * (i + 1));
let itemAtIndex = arr[randomIndex];
arr[randomIndex] = arr[i];
arr[i] = itemAtIndex;
}
return arr;
}
// 扩展到数组的原型上去
Array.prototype.shuffle = shuffle;
})();
开发中的应用
- 音乐随机播放
- 数据抽样等