全国旗舰校区

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

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  千锋问问

JS实现深拷贝复制的方法有哪些

问题描述:JS实现深拷贝复制的方法有哪些

推荐答案 本回答由问问达人推荐

  实现深拷贝有多种方式,这里提供几种常见的方法:

  方法一:递归复制

  递归复制是一种简单但是常用的深拷贝实现方式。基本思路是遍历对象的每个属性,如果属性值是一个对象,则递归调用该方法进行复制。

  function deepClone(obj) {

  // 判断是否是引用类型

  if (typeof obj !== 'object' || obj === null) {

  return obj;

  }

  let result;

  if (Array.isArray(obj)) {

  result = [];

  for (let i = 0; i < obj.length; i++) {

  result.push(deepClone(obj[i]));

  }

  } else {

  result = {};

  for (let key in obj) {

  result[key] = deepClone(obj[key]);

  }

  }

  return result;

  }

JS实现深拷贝复制的方法

  方法二:使用 JSON 对象

  如果数据不包含函数、循环引用等特殊情况,可以使用 JSON 对象的 stringify 和 parse 方法来实现深拷贝。该方法的基本思路是将对象序列化为 JSON 字符串,再将 JSON 字符串反序列化为新的对象。

  function deepClone(obj) {

  return JSON.parse(JSON.stringify(obj));

  }

  需要注意的是,该方法不能正确处理函数、循环引用等特殊情况。

  方法三:使用第三方库

  如果项目中使用了第三方库,可以使用该库提供的深拷贝方法,如 Lodash 库提供的 cloneDeep 方法。

  const _ = require('lodash');

  const obj = { a: 1, b: { c: 2 } };

  const clonedObj = _.cloneDeep(obj);

  使用第三方库的优点是不需要自己实现深拷贝方法,可以直接调用现成的方法。但是需要注意库的引入和使用方法。

查看其它两个剩余回答
在线咨询 免费试学 教程领取