tsシンプルなオブジェクトを深くコピーする
706 ワード
単純に循環対象の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]'
}