Javascript 在forEach循环中覆盖的对象值

Javascript 在forEach循环中覆盖的对象值,javascript,arrays,Javascript,Arrays,试着解决这个问题,而不是自己有另一个问题 让arr=[ {“足迹形状”:[“L形”、“H形”、“T形”]}, {“楼层数”:[1,2]} ] 让答案=[]; arr[0][“Footprint_Shape”].forEach(x=>{ log('x:',x)//在第一个数组上保持循环,打印元素 设newObj={}; newObj[“Footprint_Shape”]=x; arr[1][“楼层数”].forEach(y=>{ console.log('y:',y) newObj[“楼层数”]

试着解决这个问题,而不是自己有另一个问题

让arr=[
{“足迹形状”:[“L形”、“H形”、“T形”]},
{“楼层数”:[1,2]}
]
让答案=[];
arr[0][“Footprint_Shape”].forEach(x=>{
log('x:',x)//在第一个数组上保持循环,打印元素
设newObj={};
newObj[“Footprint_Shape”]=x;
arr[1][“楼层数”].forEach(y=>{
console.log('y:',y)
newObj[“楼层数”]=y
回答:推(newObj);
})
});

控制台日志(应答)您没有在第二个循环上创建新对象。您只是在第一个循环上创建的第二个循环中更改
newObj
的值

您可以执行以下操作:

let arr=[{“Footprint_-Shape”:[“L-Shape”、“H-Shape”、“T-Shape”]},{“Num_of_-floor”:[1,2]};
让答案=[];
arr[0][“Footprint_Shape”].forEach(x=>{
arr[1][“楼层数”].forEach(y=>{
让newObj={};//必须在每个循环中初始化内部对象以创建新对象。
newObj[“Footprint_Shape”]=x;
newObj[“楼层数”]=y
回答:推(newObj);
});
});

控制台日志(应答)在这里,您总是覆盖上一个值:

arr[1]["Num_of_Floors"].forEach(y => newObj["Num_of_Floors"] = y
因此
newObj[“Num_of_Floors”]
将只与循环结束后数组中的最后一层相等。听起来您希望在每次迭代中生成并推送一个对象:

让arr=[
{“足迹形状”:[“L形”、“H形”、“T形”]},
{“楼层数”:[1,2]}
]
让答案=[];
arr[0][“Footprint\u Shape”].forEach(Footprint\u Shape=>{
arr[1][“楼层数”]。forEach(楼层数=>{
回答,推({
脚印呈U形,
楼层数,
});
})
});
控制台日志(应答)