更新 经过进一步测试后,它似乎确实有效,但控制台输出不正确;两个阵列看起来完全一样。
我正在使用本文所述的Fisher-Yates(Knuth)shuffle(底部附近的代码):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/
如果你在控制台中清楚地看到shuffle有效,但是分配失败了。
非常感谢任何帮助,了解正在发生的事情。
答案 0 :(得分:2)
确实如此。数组是可变的。您在控制台中获得相同的日志,因为它们都是洗牌结果。您首先记录了未洗涤的阵列,但是在洗牌后检查了它,然后它已经改变了。检查控制台和源中的数组值,它们是不同的。