更改数组的值更改原始数组JavaScript

问题描述 投票:5回答:3

以下代码将ID 0中的两个元素都设置为-,尽管我只希望将其中一个元素设置为-1。我只是在创建对labelArray的引用,还是其他内容?

labelArray.sort(compare);
valueArray = labelArray;
valueArray[0] = '-1';
labelArray[0] = '-';

感谢所有帮助。

更新(2019):我第一次写这篇文章已经好几年了,ES6几乎被广泛使用。因此,我想补充一下,而不是使用公认的答案中推荐的slice()方法,而可以使用以下的array destructing进行复制:

valueArray = [...labelArray];
javascript arrays
3个回答
10
投票

是。 valueArraylabelArray都引用相同的基础数组。要进行复制,请使用slice()

valueArray = labelArray.slice(0);

注意:Slice()仅复制1级深度,这对于原始数组很好用。如果数组包含复杂对象,请使用jQuery的clone(),@ @乔纳森。


2
投票

我只是创建对labelArray […]的引用吗?

是的,完全是。 valueArraylabelArray仍标识同一对象,尚未复制。


1
投票

[valueArray只是对labelArray的引用。

© www.soinside.com 2019 - 2024. All rights reserved.