将一个数组对象分配给另一个数组的Javascript

时间:2018-07-18 18:20:59

标签: javascript arrays node.js

今天,我在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/

2 个答案:

答案 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);