gpt4 book ai didi

javascript - 克隆一个对象并改变值也会改变原始对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:52:29 26 4
gpt4 key购买 nike

我想知道为什么会这样?

我有一个对象存储在 var myObj 中:

var myObj = JSON.parse(fs.readFileSync('json/data.json', 'utf8'));

然后我通过以下方式从原始对象中克隆:

var modObj = myObj;

之后我从克隆中删除空值:

cleansedObj = removeEmpty(modObj);

为什么这也会改变原始的 myObj 并从中删除空值?

函数如下:

function removeEmpty(obj) {
Object.keys(obj).forEach(function(key) {
if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key])
else if (obj[key] === "") delete obj[key]
});
return obj;
};

我通过这样做找到了一个解决方法,但似乎是不必要的操作:

var cleansedObj = JSON.stringify(myObj);
cleansedObj = removeEmpty(JSON.parse(cleansedObj));

谢谢!

最佳答案

你不是在克隆你只是用新的变量名引用相同的东西。

从现有对象中创建一个新对象并使用它

var modObj  = JSON.parse(JSON.stringify(myObj));

关于javascript - 克隆一个对象并改变值也会改变原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42529599/

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