JS实现对象深度拷贝

2019-04-02  本文已影响0人  Simon_King
 // 对象不做function的判断
function deepClone(obj) {
  if(!obj) {
    return obj;
  }

  // 如果传入的数组
  if (Array.isArray(obj)) {
     return obj.map(item => {
      if (Array.isArray(item) || typeof item === 'object') {
        return deepClone(item);
      }
      return item;
    });
  }

  // 如果是对象
  let result = {};
  if (typeof obj === 'object') {
    for (const key in obj) {
      if (Array.isArray(obj[key]) || (typeof obj[key] === 'object')) {
        result [key] = deepClone(obj[key]);
      } else {
        result[key] = obj[key];
      }
    }
  }

  return result;
}
上一篇下一篇

猜你喜欢

热点阅读