为什么我的数组在洗牌时没有被重新分配

Why does my array not get reassigned when I shuffle it?

本文关键字:新分配 分配 数组 我的 为什么      更新时间:2023-09-26

更新经过进一步的测试,它似乎确实可以工作,但控制台输出不正确;两个数组看起来仍然完全相同。


我正在使用Fisher Yates(Knuth(洗牌,如本文所述(代码接近底部(:http://bost.ocks.org/mike/shuffle/

这段代码正确地搅乱了一个元素数组。我已经在控制台中对此进行了测试以进行验证。我正在做一个项目,我需要打乱一个数组。这段代码正确地搅乱了数组数组,因为它与数据无关。

但是,当我尝试将数组分配给新值时,它不会改变。例如:

data = [['1','2','3'],['4','5','6'],['7','8','9'],['10','11','12']];
data = shuffle(data); //Value of data does not change, even though shuffle works

当我做时

shuffle(data);

在控制台中,它返回一个经过正确洗牌的数组。

我创建了这个JSFiddle,所以您可以看到:http://jsfiddle.net/herbstmb/Ve24U/

如果你在控制台上看清楚,洗牌是有效的,但分配失败了。

非常感谢您对了解情况的帮助。

确实如此。数组是可变的。您在控制台中得到相同的日志,因为它们都是混洗的结果。您首先记录了未混洗的数组,但在混洗后对其进行了检查,然后它发生了更改。检查控制台和源代码中的数组值,它们不同。