1. 程式人生 > >深拷貝(遞迴方法)

深拷貝(遞迴方法)

function demo(param) {

//判斷型別

if(Object.prototype.toString.call(param)==="[object Array]"){

//是陣列就建立一個空陣列,便於存值

var obj = []

//把數組裡的元素遍歷處理

param.forEach(element => {

/*把遍歷的元素存於新陣列中, 並呼叫demo ,因為可能此陣列是二元或多次元陣列,也有可能是物件,然後再

*進行判斷型別,遍歷,知道遍歷完為止

*/

obj.push(demo(element))

})

}else if(Object.prototype.toString.call(param)==="[object Object]"){

//是物件就建立一個空物件,存放遍歷出的值

var obj = {}

for (const key in param) {

obj[key]=demo(param[key])

}

}else{

//如果既不是陣列,也不是物件,那就不用迴圈處理,直接返回就是了(字串,數值)

return param

}

return obj

}

//呼叫

var creat = demo(array)