这是一个对象数组,
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]; }
任何人都请..
提前谢谢
答案 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)