I want to replace the entire object in an array.
/
var array = [ {name: "name1" }, { name: "name2" } ];
var element = array[0];
element = {name: "name3"};
alert(array[0].name);
In this piece of code I would expect the output name3, why can't I replace an entire object in an array like this? And what is the good way to do this?
I want to replace the entire object in an array.
http://jsfiddle.net/CWSbJ/
var array = [ {name: "name1" }, { name: "name2" } ];
var element = array[0];
element = {name: "name3"};
alert(array[0].name);
In this piece of code I would expect the output name3, why can't I replace an entire object in an array like this? And what is the good way to do this?
Share Improve this question asked May 21, 2012 at 10:37 RolandGRolandG 1,3294 gold badges14 silver badges21 bronze badges 1 |2 Answers
Reset to default 16The correct way is
array[0] = {name: "name3"};
Your existing code does not work as expected because you are taking a referenc* to the first element with
var element = array[0];
and then you are replacing the value of this local variable with another object. This leaves the original array unmodified.
Try this :
var array = [ {name: "name1" }, { name: "name2" } ];
array[0] = {name: "name3"};
alert(array[0].name);
element
is not the actual array - its a copy of the array
element
, not toarray[0]
. – Felix Kling Commented May 21, 2012 at 10:39