31

This is an array of objects,

var data = [
 {"label" : "1", "value" : 12},
 {"label" : "1", "value" : 12},
 {"label" : "1", "value" : 12},
 {"label" : "1", "value" : 12}
 ];

How can I add values to these dynamically? iItried the below code but no success:

var lab =["1","2","3", "4"];
var val = [42,55,51,22];
var data = new Array();
for(var i=0; i<4; i++){
 data[i].label = lab[i];
 data[i].value = val[i]; 
}
starball
59.9k53 gold badges319 silver badges1k bronze badges
asked Oct 22, 2011 at 8:47
2
  • 1
    You know that there are 3x lab and 4x val? Commented Oct 22, 2011 at 9:25
  • yes i know, its only here mistakenly.. thanks for informing me Commented Oct 22, 2011 at 9:37

2 Answers 2

63

You have to instantiate the object first. The simplest way is:

var lab =["1","2","3"];
var val = [42,55,51,22];
var data = [];
for(var i=0; i<4; i++) {
 data.push({label: lab[i], value: val[i]});
}

Or an other, less concise way, but closer to your original code:

for(var i=0; i<4; i++) {
 data[i] = {}; // creates a new object
 data[i].label = lab[i];
 data[i].value = val[i]; 
}

array() will not create a new array (unless you defined that function). Either Array() or new Array() or just [].

I recommend to read the MDN JavaScript Guide.

answered Oct 22, 2011 at 8:50
Sign up to request clarification or add additional context in comments.

Comments

12

In Year 2019, we can use Javascript's ES6 Spread syntax to do it concisely and efficiently

data = [...data, {"label": 2, "value": 13}]

Examples

var data = [
 {"label" : "1", "value" : 12},
 {"label" : "1", "value" : 12},
 {"label" : "1", "value" : 12},
 ];
 
data = [...data, {"label" : "2", "value" : 14}] 
console.log(data)

For your case (i know it was in 2011), we can do it with map() & forEach() like below

var lab = ["1","2","3","4"];
var val = [42,55,51,22];
//Using forEach()
var data = [];
val.forEach((v,i) => 
 data= [...data, {"label": lab[i], "value":v}]
)
//Using map()
var dataMap = val.map((v,i) => 
 ({"label": lab[i], "value":v})
)
console.log('data: ', data);
console.log('dataMap : ', dataMap);

answered Jul 1, 2019 at 21:28

3 Comments

If in map you just make assignments, use forEach instead
I guess, i used map then because I didn't know the i can also be get in forEach.
I edited to include both the ways, map() is concise.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.