使用扩展运算符克隆数组

时间:2017-10-19 17:57:45

标签: javascript spread-syntax

如何使用新的扩展运算符克隆其中包含数组的对象?

示例对象:

vehicles: { 
  cars:  [1, 2],
  boats: [3, 4]
}

我想要一个包含数组的新对象。在那个新对象中,我希望能够在不引用和影响车辆对象的情况下更改或添加到数组中。

1 个答案:

答案 0 :(得分:3)

Object.assign和spread运算符创建浅层克隆,只有一层深度,超出它们的引用范围。我找到的最好方法(Thanks MDN)是使用JSON函数创建一个真正的克隆。

let vehicles = { 
  cars:  [1, 2],
  boats: [3, 4],
};

let test = JSON.parse(JSON.stringify(vehicles));

console.log(vehicles, test);

test.cars[0] = 5;
vehicles.cars[0] = 7;

console.log(vehicles, test);