JavaScript 数组
JavaScript 数组类用于构造数组,数组是高级和类似列表的对象。
数组可用于在单个变量中存储多个值。
数组可以被描述为能够同时保存多个值的唯一变量。
每个项目都有一个编号,称为数字索引,允许我们访问它。
JavaScript 数组从零索引开始,并使用不同的方法进行操作。
与 Ruby 和 PHP 等语言相反,JavaScript 没有内置的打乱数组的方法。
但是,有一种方法可以对序列进行打乱。
例如,我们有以下数组:
let arr = [1, 2, 3, 4, 5] => [3, 5, 4, 1, 2] //打乱后可能是这样的。
打乱一组值被认为是计算机科学中最古老的问题之一。
使用 Fisher-Yates shuffle 算法可以进行混洗,以生成有限序列的随机排列。
也就是说,算法对序列进行了shuffle。
Richard Durstenfeld 介绍了专为计算机使用而设计的现代版 Fisher-Yates shuffle。
function shuffleArray(array) { let curId = array.length; //There remain elements to shuffle while (0 !== curId) { //Pick a remaining element let randId = Math.floor(Math.random() * curId); curId -= 1; //Swap it with the current element. let tmp = array[curId]; array[curId] = array[randId]; array[randId] = tmp; } return array; } //Usage of shuffle let arr = [1, 2, 3, 4, 5]; arr = shuffleArray(arr); console.log(arr);
如果使用 ES6/ECMAScript 2014 编码,允许立即分配两个变量,代码将更短:
function shuffleArray(arr) { for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } console.log(arr); } let arr = [1, 2, 3, 4, 5]; shuffleArray(arr);
function shuffleArray(arr) { arr.sort(() => Math.random() - 0.5); } let arr = [1, 2, 3, 4, 5]; shuffleArray(arr); console.log(arr)
日期:2020-06-02 22:16:23 来源:oir作者:oir