递归实现深拷贝


递归实现深拷贝

递归实现深拷贝

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;
}


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

创建React项目

nodejs,yarn或npm切换镜像设置淘宝镜像源

评 论