学习链接
关于 JavaScript 的数组随机排序
JavaScript专题之乱序
关于数组乱序的深挖——“感觉一直在写毒代码”
数组乱序
function shuffle(arr) { let new_arr = arr.map(i => ({ v: i, r: Math.random() })); new_arr.sort((a, b) => a.r - b.r); arr.splice(0, arr.length, ...new_arr.map(i => i.v)); return arr;}
function shuffle(arr) { let i = arr.length; while (i) { let j = Math.floor(Math.random() * i--); [arr[j], arr[i]] = [arr[i], arr[j]]; } return arr;}
function shuffle(arr) { const len = arr.length; for (let i = 0; i < len; i++) { let j = Math.floor(Math.random() * (len - i)) + i; [arr[j], arr[i]] = [arr[i], arr[j]]; } return arr;}
概率测试
let times = 100000;let res = {};for (let i = 0; i < times; i++) { let arr = shuffle([1, 2, 3]); let key = JSON.stringify(arr); res[key] ? res[key]++ : res[key] = 1;}// 为了方便展示,转换成百分比for (let key in res) { res[key] = res[key] / times * 100 + '%'}console.log(res);