1. 程式人生 > 其它 >一個方法實現深度克隆與淺度克隆

一個方法實現深度克隆與淺度克隆

技術標籤:# JavaScript基礎部分常見面試javascript

遞迴實現一個可選clone方法關於深度克隆與淺度克隆

/*
* @實現 陣列深度與淺度克隆
*/
function clone(obj,deep){
	//判斷傳進來的obj為陣列、物件、還是屬於基本型別的值
    if(Array.isArray(obj)){
    	//判斷是否要進行深度克隆
        if(deep){
            var newArr = [];
            // 通過遞迴陣列將資料新增到newArr並返回
            for(let i = 0;i<obj.length;i++){
                newArr.push(clone(obj[i],deep))
            }
            // 遞迴結束返回結果
            return newArr;
        }else{
            return obj.slice();
        }
    }else if(typeof(obj)=='object'){
        var newObj={};
        for (var prop in obj){
            if(deep){
                newObj[prop] = clone(obj[prop],deep)
            }else{
                newObj[prop] = obj[prop]
            }
        }
        // 遞迴結束返回結果
        return newObj
    }else{
        return obj
    }
}