A clonagem de um objeto json e a alteração de valores também modificam o objeto original
Fiquei me perguntando por que isso acontece?
Eu tenho um objeto json armazenado em var myObj:
var myObj = JSON.parse(fs.readFileSync('json/data.json', 'utf8'));
então eu pego um clone do objeto original:
var modObj = myObj;
Depois disso, removo os valores vazios do clone:
cleansedObj = removeEmpty(modObj);
Por que isso também modifica o myObj original e remove valores vazios também?
aqui está a função:
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;
};
Encontrei uma solução alternativa ao fazer isso, mas parece uma operação desnecessária:
var cleansedObj = JSON.stringify(myObj);
cleansedObj = removeEmpty(JSON.parse(cleansedObj));
Obrigado!