«

递归实现深拷贝

时间:2023-8-16 00:01     作者:六思逸     分类: JavaScript


递归实现深拷贝

function deepCopy(obj) {
  let copy;

  // 检查传入的参数是否为对象
  if (typeof obj === 'object') {
    // 如果是数组,则创建一个新的空数组作为副本
    if (Array.isArray(obj)) {
      copy = [];
      // 遍历原数组的每个元素,并递归调用deepCopy函数来复制每个元素,并将其添加到副本数组中
      obj.forEach((item) => {
        copy.push(deepCopy(item));
      });
    } else {
      // 如果是对象,则创建一个新的空对象作为副本
      copy = {};
      // 遍历原对象的每个属性,并递归调用deepCopy函数来复制每个属性的值,并将其添加到副本对象中
      for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
          copy[key] = deepCopy(obj[key]);
        }
      }
    }
  } else {
    // 如果参数不是对象,则直接将其赋值给副本变量
    copy = obj;
  }

  // 返回副本对象或数组
  return copy;
}

标签: 递归实现深拷贝

版权所有:六思逸
文章标题:递归实现深拷贝
除非注明,文章均为 六思逸 原创,转载请注明作者和出处 六思逸

扫描二维码,在手机上阅读

推荐阅读: