在变量中保存完整的数组名称和索引

时间:2017-02-20 21:36:41

标签: javascript arrays

我希望找出为什么看似如此简单的事情,并不像你期望的那样工作。

Array1 = ["item1", "item2", "item3", "item4", "item5"];

Array1[0] = "changeditem1";

使用Array1 [0]更改数组的方法工作正常并将值更改为changeditem1

["changeditem1", "item2", "item3", "item4", "item5"]

虽然你把它放在一个变量

var arrayvariable = Array1[0]

尝试使用

使用变量更改数组
arrayvariable = "changeditem1"

Array1 = ["item1", "item2", "item3", "item4", "item5"];

对数组没有任何作用。如果有人能够解释我是否遗漏了某些东西或者我做错了什么,那就太好了。谢谢。

2 个答案:

答案 0 :(得分:0)

这很简单。它与数组无关。

var a = "some value";
var b = a;
var b = "change the value";
console.log(a);  //some value

=运算符将更改存储在其中的值。

因此,通过更改第3行中b的值,我们只会更改b而不是a的值。

要更改a,您需要再次将b分配给a,即撰写a=b;

答案 1 :(得分:0)

在javascript中,=运算符会将操作数右侧的复制到左侧。除非右侧的变量属于对象类型,否则将复制该对象的引用

var obj = {num:5};
var number = 5;
var array = [obj, number]

obj.num = 10;
number = 10;

console.log(array[0].num)
console.log(array[1])

有关详细说明,请参阅here

要解决您的问题,您可以存储项目的索引,以便您可以修改数组。或者您可以将数据存储为对象数组,以便在复制变量时仍可以通过它来引用它。