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

Muj*_*der 16 javascript arrays

这是一个对象数组,

var data = [
      {"label" : "1", "value" : 12},
      {"label" : "1", "value" : 12},
      {"label" : "1", "value" : 12},
      {"label" : "1", "value" : 12}
    ];
Run Code Online (Sandbox Code Playgroud)

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

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];    
}
Run Code Online (Sandbox Code Playgroud)

有人请...提前谢谢

Fel*_*ing 39

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

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]});
}
Run Code Online (Sandbox Code Playgroud)

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

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

array()不会创建新数组(除非您定义了该函数).无论是Array()new Array(),或只是[].

我建议您阅读MDN JavaScript指南.


its*_*oor 7

2019年,我们可以使用Javascript的ES6 Spread语法简洁高效

data = [...data, {"label": 2, "value": 13}]
Run Code Online (Sandbox Code Playgroud)

例子

data = [...data, {"label": 2, "value": 13}]
Run Code Online (Sandbox Code Playgroud)

对于您的情况(我知道是在 2011 年),我们可以使用map()forEach() 来完成,如下所示

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