2017-02-20 68 views
0

我在寻找找出为什么看起来如此简单的东西不能像你期望的那样工作。在变量中保存完整的数组名称和索引

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

Array1[0] = "changeditem1"; 

使用数组1 [0]以改变阵列工作正常,并且改变值的这种方法changeditem1

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

虽然如果你把它在一个变量

var arrayvariable = Array1[0] 

尝试然后使用变量改变阵列使用

arrayvariable = "changeditem1" 

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

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

+0

JavaScript不起作用;没有办法获得数组元素的别名。 – Pointy

+0

您的比较存在缺陷。尝试'arrayvariable [0] =“changeditem1”'。 –

+0

Array1与arrayvariable的内存位置不同。因此,Array1本身的变化改变了它的观点,而数组变化的变化改变了它自己的内容,而不是改变其他内存位置。 –

回答

0

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

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

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

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

要改变a你将再次需要通过写a=b;

+0

你的答案是如何更改变量值。 – UndefinedUsername

+0

@UndefinedUsername是的,这是操作系统最终要求的。 –

+0

这也许是最终的问题,但我正在寻找专门查找使用Array1 [0]作为变量的示例的可能方法。 – UndefinedUsername

0

在JavaScript中分配给ba,=操作符会从操作数向左右侧的复制。除非右侧的变量类型为对象,否则将复制该对象的参考

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。或者,您可以将数据存储为对象数组,以便在复制变量时仍然可以通过引用对其进行修改。