2017-02-20 92 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。或者,您可以將數據存儲爲對象數組,以便在複製變量時仍然可以通過引用對其進行修改。