天天看點

ts 簡單的對象深拷貝

 簡單的通過循環對象的 key , 如果 key 還是一個對象 通過遞歸來不斷的進行對象的拷貝。

export function deepMerge(...objs: any[]): any {
  const result = Object.create(null)
  objs.forEach(obj => {
    if (obj) {
      Object.keys(obj).forEach(key => {
        const val = obj[key]
        if (isPlainObject(val)) {
          // 遞歸
          if (isPlainObject(result[key])) {
            result[key] = deepMerge(result[key], val)
          } else {
            result[key] = deepMerge(val)
          }
        } else {
          result[key] = val
        }
      })
    }
  })
  return result
}

export function isPlainObject(val: any): val is Object {
  return toString.call(val) === '[object Object]'
}
           

繼續閱讀