【发布时间】:2017-07-20 15:42:43
【问题描述】:
我想知道为什么会这样?
我有一个 json 对象存储在 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 = myObj;不是克隆,您只是将myObj的引用传递给modObj -
可能相关(
fs.readFileSync感觉像 Node):Cloning an Object in Node.js
标签: javascript json object