
如何将数组内元素顺序打乱呢?这里小shy向大家介绍一种算法。
Fisher–Yates shuffle:洗牌算法。
通俗理解:
先将数组最后一位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);
然后将数组倒数第二位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);
然后将数组倒数第三位元素作为参考点,将这个参考点和数组其他位置的元素(使用随机数获得)交换位置(当然也有不改变其位置的情况);
以此类推,直到参考点为数组第一位元素交换完毕之后结束。最终得出一个打乱顺序的数组。
应用场景:随机展示图片、随机音乐播放等等。
代码实现
const students = ["学生1", "学生2", "学生3", "学生4"];
let len = students.length, index; // index: 随机数
for (let point = len - 1; point >= 0; point--) {
index = Math.floor(Math.random() * point);
// 交换两个元素的值(在上一篇介绍过几种方法)
students[index] = [students[point], students[point] = students[index]][0];
}原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。