今天,我在NodeJS中进行编码时遇到了一个新问题,当时我正在从数据库中获取一条记录,该记录也是一个对象,其中还将包含一个对象数组,并且我已将对象数组分配给一个新变量,让我们调用 arr < / strong>,然后将字符串推入 arr 。出于某些奇怪的原因,我的原始记录也不确定为什么会发生。我知道更改/重新分配对象会影响原始对象,但是在这种情况下,不确定为什么会发生。
let original = {
a: 1,
branchIds: [ {
_id: "abc",
name: "abc"
}]
};
let arr = original.branchIds;
arr.push("sa");
console.log(original);
JsFiddle链接 http://jsfiddle.net/jdqmLzbv/4/
答案 0 :(得分:3)
您需要先修改数组的副本:
let arr = original.branchIds.slice();
答案 1 :(得分:3)
您正在使用相同的引用,并且实际上将其推入相同的数组。复制它,orignal将不会更新
let original = {
a: 1,
branchIds: [ {
_id: "abc",
name: "abc"
}]
};
let arr = original.branchIds.map(obj => ({...obj}));
arr.push("sa");
console.log(original);
console.log(arr);