一個方法實現深度克隆與淺度克隆
阿新 • • 發佈:2020-12-29
技術標籤:# 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 } }