8

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?

1
  • 1
    You are just assigning an other value to element, not to array[0]. Commented May 21, 2012 at 10:39

2 Answers 2

16

The 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.

Sign up to request clarification or add additional context in comments.

1 Comment

I think you should try array[i].name="you value to assign", if you follow array[i]={name:'something'}, every object property gets assign with only name all will be null in that case.
2

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.