gpt4 book ai didi

javascript 总是推送同一个对象

转载 作者:行者123 更新时间:2023-11-29 23:24:32 26 4
gpt4 key购买 nike

你知道为什么这段代码总是添加最后一个对象吗?因为我用过

var obj = {} 

var newBase = Object.assign({}, baseJson)

但是代码总是使用相同的引用?

module.exports = (csv, baseJson) => {

var lines=csv.split("\n");

var result = [];

var headers=lines[0].split(";");
for(var i=1;i<lines.length;i++){
var obj = {};
var newBase = Object.assign({}, baseJson);
obj["case"] = "Scenario";
obj["request"] = newBase;
obj["response"] = {
responseCode: "5",
actionCode: "0",
approvalCode: "98765X",
}
var currentline=lines[i].split(";");
var responseTags = ["responseCode", "actionCode", "approvalCode"];
for(var j=0;j<headers.length;j++){

headers[j] = headers[j].replace('\r','');
currentline[j] = currentline[j].replace('\r','')
if (headers[j] == "Scenario") {
obj["case"] = currentline[j];
}
else if (responseTags.indexOf(headers[j]) > -1 ){
obj["response"][headers[j]] = currentline[j];
}
else {
saveValue(obj["request"], headers[j], currentline[j]);
}
}
result.push(obj);

}

我几乎尝试了所有方法,但无法创建新对象。它使用相同的引用。此代码位于 node.js 中。谢谢

最佳答案

Object.assign 可能不会克隆内部对象,它只是采用相同的引用,尝试 stringify 并解析它。

 var newBase = JSON.parse(JSON.stringify(baseJson));

引用了解更多:What is the most efficient way to deep clone an object in JavaScript?

关于javascript 总是推送同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49701894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com