gpt4 book ai didi

javascript - Javascript 中的 Fisher-Yates Shuffle

转载 作者:行者123 更新时间:2023-12-02 14:06:39 27 4
gpt4 key购买 nike

JS 新手,目前正在大学学习。对于我当前的 JS 项目,我正在构建一个内存卡游戏。我开始思考如何随机洗牌,并且我接近了 Fisher-Yates Shuffle 算法的作用 - this page 上的第二个程序。但是,我不明白 [0] 在 splice 方法之后到底做了什么。它是移动/压缩阵列的原因吗?如果是,我找不到其他相关示例/文档。

function shuffle(array) {
var copy = [], n = array.length, i;

// While there remain elements to shuffle…
while (n) {

// Pick a remaining element…
i = Math.floor(Math.random() * n--);

// And move it to the new array.
copy.push(array.splice(i, 1)[0]);
}

return copy;
}

最佳答案

array.splice(i, 1) 删除 array 的第 i 元素并将其作为单值数组返回(就像 array.splice(i, 2) 会剪掉第 i 个元素和第 i+1 个元素并将它们作为二元素数组)。然后,简单的索引操作 [0] 从该数组中选取单个元素(因为我们不需要数组);然后使用 copy.push 将这个单个元素添加到 copy 中。

更熟悉的索引操作用法:

array = [4, 7, 2, 10];
array[0]
// => 4
array[1]
// => 7

array = [18];
array[0]
// => 18

关于javascript - Javascript 中的 Fisher-Yates Shuffle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39989317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com