简介
在本实验中,我们将探索费雪 - 耶茨(Fisher-Yates)算法及其在 JavaScript 中的实现。具体来说,我们将重点关注如何使用该算法对数组进行洗牌操作。在本实验结束时,你将更好地理解费雪 - 耶茨算法的工作原理,以及如何使用它来随机化数组中元素的顺序。
数组洗牌算法
要在 JavaScript 中对数组进行洗牌操作,请使用费雪 - 耶茨(Fisher-Yates)算法。该算法会随机重新排列数组中的元素,并返回一个新数组。
要开始练习编码,请打开终端/SSH 并输入 node。
以下是费雪 - 耶茨算法的代码:
const shuffle = ([...arr]) => {
let m = arr.length;
while (m) {
const i = Math.floor(Math.random() * m--);
[arr[m], arr[i]] = [arr[i], arr[m]];
}
return arr;
};
要对数组进行洗牌操作,将数组传递给 shuffle 函数,它将返回洗牌后的数组。例如:
const foo = [1, 2, 3];
shuffle(foo); // 返回 [2, 3, 1],而 foo 仍然是 [1, 2, 3]
总结
恭喜你!你已经完成了数组洗牌实验。你可以在 LabEx 中练习更多实验来提升你的技能。