当我只更新该数组的一个索引时,javascript数组两个索引值都得到更新

Posted

技术标签:

【中文标题】当我只更新该数组的一个索引时,javascript数组两个索引值都得到更新【英文标题】:javascript array both index value getting update when I update only one index of that array 【发布时间】:2018-07-01 22:43:07 【问题描述】:

伙计们,我在制作动态多维数组时遇到了这个问题,但当我使用 javascript 更新数组的特定父索引时,我仍然不知道出了什么问题

.on('click', function()
     array[dynamicIndex] = anotherArray;
 );

所以问题是,当array[53][1,2,3] 是第一个索引分配值时,当我尝试分配新值时,新索引数组更新为

array[53][1,2,3,4,5,6]
array[54][1,2,3,4,5,6]

希望你有这个问题,如果没有,你可以访问这个link。

【问题讨论】:

数组是通过引用传递的,您是否检查过您没有将相同的数组 ref 分配给父数组中的不同元素? 如果您每次都使用相同的anotherArray,那么您将在所有元素中放置对同一个数组的引用。 不,我没有分配相同的数组,因为我只想分配不同索引中的数组。您可以访问链接以供参考。 @FrontTheMachine 我没有得到请解释@Barmar 【参考方案1】:

在您的示例中,当您使用:

lightArr[parseInt(thatText)] = minArray;

您正在通过引用分配一个数组。这样,您对minArray 所做的任何更改都将反映到lightArr[parseInt(thatText)] 值。

您可以使用this 的方法来解决您的问题:

lightArr[parseInt(thatText)] = minArray.slice();

【讨论】:

lightArrthatTextminArray 是从哪里来的?尽管解释是正确的,但您似乎从另一个问题中获得了代码。 @Barmar 他们来自他提供的 jsfiddle 链接。 非常感谢@omaxel,这是一个美丽而准确的答案。

以上是关于当我只更新该数组的一个索引时,javascript数组两个索引值都得到更新的主要内容,如果未能解决你的问题,请参考以下文章

单击时显示数组中的最后一个索引(在继续更新的数组中)

javascript 返回带有一个更新索引的数组

使用整数键创建关联数组

将一维数组的索引转换为二维数组 i。 e.行列

Tableview使用空数组获取索引超出范围

我可以在javascript中将数组附加到“formdata”吗?