全国旗舰校区

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

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

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

js实现深拷贝复制的方法

发布时间:2023-05-30 13:35:00
发布人:zyh

  在 JavaScript 中实现深拷贝(Deep Copy)可以使用以下几种方法:

  手动递归复制:

  使用递归的方式遍历对象或数组,对每个属性进行复制操作。当遇到对象或数组时,再递归调用深拷贝函数。这种方法可以处理多层嵌套的数据结构,但要注意避免循环引用。


function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}

let copy;
if (obj instanceof Array) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}

return copy;
}

// 使用示例
const originalObj = { name: 'John', age: 25, hobbies: ['reading', 'running'] };
const copiedObj = deepCopy(originalObj);

      使用 JSON 序列化和反序列化:

  将对象转换为 JSON 字符串,然后再将 JSON 字符串转换回对象。这种方法简单易用,但可能会有一些限制,例如无法复制特定类型的对象或函数。


function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}

// 使用示例
const originalObj = { name: 'John', age: 25, hobbies: ['reading', 'running'] };
const copiedObj = deepCopy(originalObj);

       需要注意的是,使用 JSON 序列化和反序列化的方法会丢失一些特殊的对象属性或方法,如函数、正则表达式、日期对象等。在选择深拷贝方法时,根据具体的需求和数据类型进行选择。

相关文章

python写入json文件?

python写入json文件?

2023-11-02
vscode设置tab为4个空格?

vscode设置tab为4个空格?

2023-11-02
更新pycharm?

更新pycharm?

2023-11-02
anaconda每次打开都要安装?

anaconda每次打开都要安装?

2023-11-02

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取