2012-05-21 177 views
8

我想替換數組中的整個對象。替換對象數組中的元素

http://jsfiddle.net/CWSbJ/

var array = [ {name: "name1" }, { name: "name2" } ]; 
var element = array[0]; 
element = {name: "name3"}; 
alert(array[0].name); 

在這一段代碼我期望輸出NAME3,爲什麼不能在這樣的陣列替換整個對象?有什麼好辦法做到這一點?

+1

你只是分配一個其他值'element',不'數組[0]' 。 –

回答

16

正確的方法是

array[0] = {name: "name3"}; 

預期現有的代碼不工作,因爲你正在服用和借鑑*的第一個元素與

var element = array[0]; 

,然後你替換值與另一個對象的本地變量。這使原始數組保持不變。

+0

稍有不正確的解釋。 'element'不是複製,而是存儲在'array [0]'中的對象的*引用*。更改'element.name'會影響'array [0] .name'。 – Deestan

+0

@Deestan:謝謝,修正。真的不知道我在想什麼。 – Jon

+0

我認爲你應該嘗試數組[i] .name =「你賦值賦值」,如果你遵循數組[i] = {name:'something'},每個對象屬性獲取賦值只有名稱所有將爲null案件。 – Sudarshan

2

試試這個:

var array = [ {name: "name1" }, { name: "name2" } ]; 
array[0] = {name: "name3"}; 
alert(array[0].name); 

element是不實際的數組 - 它是一個數組的副本