为什么我的数组在洗牌时没有被重新分配
Why does my array not get reassigned when I shuffle it?
更新经过进一步的测试,它似乎确实可以工作,但控制台输出不正确;两个数组看起来仍然完全相同。
我正在使用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/
如果你在控制台上看清楚,洗牌是有效的,但分配失败了。
非常感谢您对了解情况的帮助。
确实如此。数组是可变的。您在控制台中得到相同的日志,因为它们都是混洗的结果。您首先记录了未混洗的数组,但在混洗后对其进行了检查,然后它发生了更改。检查控制台和源代码中的数组值,它们不同。
相关文章:
- Javascript / JQuery循环访问已发布的ajax数据字符串以为其分配新值
- 如果我不这样做会发生什么;t在javascript中的变量中分配新的Image
- 正在破坏分配.分配对象和它's的孩子在两个不同的变量中
- 如果我为 JS 变量分配一个新值,它会破坏它的绑定吗?
- 在以下情况下,map 如何分配新值
- 如何将日期分配给新的日期对象
- 为函数中的现有数组(全局变量)分配新值不起作用.为什么
- 分配给新变量时,计数器值在循环中更改
- 当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发角度 $scope.$watch
- JS:如何为新创建的HTML元素分配ID
- 自动将事件处理程序分配给新元素
- 在javascript中实例化一个新类时,不将其分配给变量有什么害处
- 解构并分配给新变量,同时不起作用
- 当您将字符串文本传递给变量,然后将该字符串中的数据分配给新变量时,它叫什么
- 为什么可以't我给“t”分配一个新值;这个“;在原型函数中
- 只需使用Immutable.js将对象分配给变量,即可克隆新对象
- 将新属性分配给内置类型实际上是非法的
- Javascript 类、编译器性能和新 Klass() 上的内存分配
- 对jsproto和分配新属性感到困惑
- 将新属性分配给对象's使用JavaScript的属性From Variable