如何在javascript中动态地向对象数组添加值?

时间:2011-10-22 08:47:00

标签: javascript arrays

这是一个对象数组,

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

如何动态地为这些值添加值?我尝试了以下代码,但没有成功

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];    }
任何人都请.. 提前谢谢

2 个答案:

答案 0 :(得分:34)

您必须首先实例化该对象。最简单的方法是:

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]});
}

或者另一种不那么简洁的方式,但更接近原始代码:

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

array()不会创建新数组(除非您定义了该函数)。 Array()new Array()[]

我建议您阅读MDN JavaScript Guide

答案 1 :(得分:0)

2019年,我们可以使用Javascript的ES6 Spread syntax简洁高效地做到这一点

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

示例

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

对于您的情况(我知道是在2011年),可以做到

var data = [];

var lab = ["1","2","3","4"];
var val = [42,55,51,22];
//map over array lab or val, i chose val
val.map((v,i) => 
   data= [...data, {"label": lab[i], "value":v}]
)

console.log(data)