Как добавить значения в массив объектов динамически в javascript?
это массив объектов,
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];
}
кто-нибудь, пожалуйста.. спасибо заранее
Ответы
Ответ 1
Сначала вы должны создать экземпляр объекта. Самый простой способ:
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()
или просто []
.
Я рекомендую прочитать Руководство по JavaScript MDN.
Ответ 2
В 2019 году мы можем использовать Javascript ES6 Синтаксис, чтобы делать это кратко и эффективно
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)