📜  复制对象数组 javascript (1)

📅  最后修改于: 2023-12-03 15:37:50.631000             🧑  作者: Mango

复制对象数组 Javascript

在Javascript开发中,我们常常会遇到需要复制一个对象数组的情况。然而,由于Javascript中的对象是引用类型,在简单地使用赋值操作符复制对象数组时,实际上只是复制了对象数组的指针,内存中始终只有一份数据。所以我们需要采用其他方式来复制一个对象数组。

以下是几种常见的复制对象数组的方法:

1. 循环遍历并新建对象

使用for循环遍历对象数组,逐个复制对象并添加到一个新的数组中。这种方法比较繁琐,但在某些情况下可能是有效的。

let oldArr = [{a: 1}, {b: 2}];
let newArr = [];
for (let i = 0; i < oldArr.length; i++) {
  newArr.push(Object.assign({}, oldArr[i]));
}
console.log(newArr); // [{a: 1}, {b: 2}]
2. 使用ES6的Spread语法

ES6引入的Spread语法可以快速地复制对象数组。利用Spread语法可以将一个数组展开成多个元素,然后重新组成一个新的数组。

let oldArr = [{a: 1}, {b: 2}];
let newArr = [...oldArr];
console.log(newArr); // [{a: 1}, {b: 2}]

需要注意的是,这种方式只适用于浅拷贝,也就是说,如果原数组中的元素是对象或数组,那么它们将会被共享。

3. 使用Array.from方法

ES6中新增了Array.from方法,可以将一个类数组对象或可迭代对象转换成一个新的数组。因此我们可以通过将对象数组放在一个Set或Map中,然后再用Array.from方法转成数组实现复制。

let oldArr = [{a: 1}, {b: 2}];
let set = new Set(oldArr);
let newArr = Array.from(set);
console.log(newArr); // [{a: 1}, {b: 2}]

需要注意的是,Set和Map只能存储唯一的值,如果原数组中有重复的元素,它们只会出现一次。

以上就是几种复制对象数组的方法,开发过程中可以根据具体情况选择最佳方式。