#javascript #arrays
#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. Вы знаете, что есть 3x lab и 4x val?
2. да, я знаю, это только здесь ошибочно.. спасибо, что сообщили мне
Ответ №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()
или просто []
.
Я рекомендую прочитать руководство по MDN JavaScript.
Ответ №2:
В 2019 году мы сможем использовать синтаксис распространения ES6 в Javascript, чтобы сделать это кратко и эффективно
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 году) мы можем сделать это с помощью map() и forEach(), как показано ниже
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);
Комментарии:
1. Если в map вы просто выполняете присваивания, вместо этого используйте forEach
2. Наверное, я использовал
map
тогда, потому что не зналi
, что туда тоже можно попастьforEach
.3. Я отредактировал, чтобы включить оба способа,
map()
кратко.