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

问题描述:

以下code导致从ID这两个元素 0 设置为 - ,即使我希望只有一个被设置为 1 。我只是创建与labelArray的引用,或者是其他什么东西?

The following code causes both elements from id 0 to be set to -, even though I want only one to be set to -1. Am I just creating a reference to the labelArray, or is something else?

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

所有帮助AP preciated。

All help is appreciated.

是。无论 valueArray labelArray 引用相同的底层数组。:要进行复印,使用的片()

Yes. Both valueArray and labelArray reference the same underlying array. To make a copy, use slice():

valueArray = labelArray.slice(0);

请注意:切片()只复制1级深,这对于基本数组正常工作。如果数组包含复杂的对象,使用类似jQuery的的clone(),信用@乔纳森。

NOTE: Slice() only copies 1 level deep, which works fine for primitive arrays. If the array contains complex objects, use something like jQuery's clone(), credit @Jonathan.