【发布时间】:2022-01-05 16:03:09
【问题描述】:
我正在尝试将对象传递到 for 循环中的数组中。该值不断被覆盖。
const files = require("./getFiles")();
module.exports = function templating() {
let design = JSON.parse(files[1]),
data = JSON.parse(files[2]),
count = Object.keys(data).length,
x = [];
for (let i = 0; i < count; i++) {
let tempDesign = design,
tempData = data;
tempDesign.columns[0].items[0]["url"] = tempData[i].url;
tempDesign.columns[1].items[0]["text"] = tempData[i].name;
tempDesign.columns[1].items[1]["text"] = tempData[i].desc;
tempDesign.columns[1].items[2]["facts"][0]["value"] = tempData[i].priceText;
tempDesign.columns[1].items[3]["actions"][0]["data"] = tempData[i].price;
x.push(tempDesign);
}
return x;
};
我希望我的输出看起来像这样:
sample= [
{
"x":"data",
"y":"data"
},
{
"a":"data",
"b":"data"
},
{
"c":"data",
"d":"data"
},
{
"e":"data",
"f":"data"
},
]
相反,我得到了这个:
sample= [
{
"e":"data",
"f":"data"
},
{
"e":"data",
"f":"data"
},
{
"e":"data",
"f":"data"
},
{
"e":"data",
"f":"data"
}
]
循环仅将最后一个对象推入数组,但计数正确。
【问题讨论】:
-
let tempdesign = design不会创建副本,而只会创建一个引用。因此,它指向同一个对象。所以你一遍又一遍地推送(和修改)同一个对象...... -
我是编码新手。你能帮我改一下语法吗?
-
感谢您的帮助。已更正。
标签: javascript node.js arrays for-loop javascript-objects