全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

JavaScript 对象数组的深浅拷贝

发布时间:2023-06-29 16:46:00
发布人:zyh

  在 JavaScript 中,对象数组的拷贝涉及到深拷贝和浅拷贝的概念。下面简要介绍这两种拷贝方式:

JavaScript 对象数组的深浅拷贝

  1. 浅拷贝:

  - 浅拷贝是指创建一个新的对象或数组,新对象的属性值是对原始对象属性的引用。也就是说,新对象和原始对象的某些属性引用相同的内存地址。

  - 对于对象数组的浅拷贝,可以使用扩展运算符 `...` 或 `Array.from()` 方法。  

const originalArray = [{ name: "John" }, { name: "Jane" }];

// 使用扩展运算符进行浅拷贝
const shallowCopyArray1 = [...originalArray];
shallowCopyArray1[0].name = "Mike";
console.log(originalArray[0].name); // 输出: Mike

// 使用 Array.from() 进行浅拷贝
const shallowCopyArray2 = Array.from(originalArray);
shallowCopyArray2[1].name = "Lily";
console.log(originalArray[1].name); // 输出: Lily

  2. 深拷贝:

  - 深拷贝是指创建一个全新的对象或数组,新对象和原始对象完全独立,不存在属性引用共享的情况。

  - 对于对象数组的深拷贝,可以使用 JSON 序列化和反序列化方法,即 `JSON.stringify()` 和 `JSON.parse()`。  

const originalArray = [{ name: "John" }, { name: "Jane" }];

// 使用 JSON 序列化和反序列化进行深拷贝
const deepCopyArray = JSON.parse(JSON.stringify(originalArray));
deepCopyArray[0].name = "Mike";
console.log(originalArray[0].name); // 输出: John

  需要注意的是,使用 JSON 序列化和反序列化方法进行深拷贝时,有一些限制:

  - 无法复制函数、正则表达式等特殊对象。

  - 无法处理循环引用的情况。

  如果需要处理更复杂的对象结构或者遇到上述限制,可以考虑使用第三方库(如 lodash 的 `cloneDeep` 方法)来实现更可靠的深拷贝。

#对象数组的深浅拷贝

相关文章

直播0人观看怎么回事

2023-09-19

短视频同时发抖音和快手好吗

2023-09-19

新人如何在短视频平台赚钱的方法有哪些

2023-09-19

做短视频准备工作有哪些

2023-09-19

三点教你完全了解自己账号的粉丝画像

2023-09-19

做短视频是全职好还是兼职

2023-09-19
在线咨询 免费试学 教程领取