function deepClone(obj = {},map = new Map()) {
if(typeof obj !== 'object') {
return obj
}
if(map.get(obj)) {
return map.get(obj)
}
// 初始化返回結果
let result = {}
if(obj instanceof Array || Object.prototype.toString(obj) === "[object Array]") {
result = []
}
// 防止循環(huán)引用
map.set(obj,result)
for(const key in obj){
if(obj.hasOwnProperty(key)) {
// 遞歸調(diào)用
result[key] = deepClone(obj[key],map)
}
}
// 返回結果
return result
}
手寫深拷貝
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 一、序列化實現(xiàn)深拷貝的缺點、手寫深拷貝 1、借助序列化實現(xiàn)深拷貝,有哪些缺點? ①不能拷貝函數(shù) ②不能拷貝Symb...
- 深淺拷貝 對象類型在賦值的過程中實際上是復制了地址,從而導致了其中一方被改變其他也都被改變的情況,在開發(fā)中我們通常...
- 深拷貝 只有對象可以利用序列化和反序列化 new 數(shù)組扁平化 方法一 適用于數(shù)字 方法二 利用some+展開運算符