Array Push заменит старое значение на новое, бот, я не понимаю, почему это произошло.
это мой код:
let meta = [];
let counter = 0;
let temp_item = {}
for (let ele of found_spec) {
let ele_clean = cleanItem(ele)
if (ele.includes(':<')) {
temp_item.label = ele_clean;
} else {
temp_item.value = ele_clean;
}
counter++;
if ((counter % 2) == 0) {
meta.push(temp_item)
}
}
let oggetto = {
"id_kromeda": id_kromeda,
"picture": found_picture[1],
"description": found_descrizione[1],
"meta": meta //<--- here is my array with overwritten old values
}
console.info(oggetto); //<--- breakpoint here
}
Вот скриншот oggetto console.info(oggetto), который включает в себя мой массив с именем meta
🤔 А знаете ли вы, что...
JavaScript позволяет создавать динамические и интерактивные веб-приложения.
У вас есть один объект temp_item
, который вы создаете перед своим циклом. Затем ваш цикл просто устанавливает свойства для этого объекта, а затем помещает объект в массив. Поскольку вставка в массив НЕ создает копию объекта, в конечном итоге вы просто изменяете один и тот же объект снова и снова в цикле и снова и снова вставляете один и тот же объект в массив.
Таким образом, вы получаете массив всех тех же объектов со свойствами, установленными на последней итерации вашего цикла.
Вы можете исправить это, создав новый объект temp_item
после того, как поместите предыдущий в массив, таким образом, каждый раз, когда вы делаете meta.push(temp_item)
, вы получаете новый объект в массиве.
let meta = [];
let counter = 0;
let temp_item = {};
for (let ele of found_spec) {
let ele_clean = cleanItem(ele)
if (ele.includes(':<')) {
temp_item.label = ele_clean;
} else {
temp_item.value = ele_clean;
}
counter++;
if ((counter % 2) == 0) {
meta.push(temp_item);
// now create a new temp_item object for future iterations
temp_item = {};
}
}