1. 程式人生 > >遞迴深拷貝物件,遞迴深複製物件, 遞迴推平樹狀資料結構

遞迴深拷貝物件,遞迴深複製物件, 遞迴推平樹狀資料結構

<script>

// 遞迴?實現物件的深度複製

let obj = {

name:"楊亞坤",

yuwen:90,

childern:[

{name:"亞坤1",yuwen:80},

{name:"亞坤2",yuwen:800},

],

hoby:[1,2,3,[33,44]]

};

function deepCopy(obj){

let arrobj;

Array.isArray(obj)?arrobj =[] :arrobj = {};

for(var i in obj){

if(obj.hasOwnProperty(i)){

arrobj[i] = typeof obj[i] === "object" ? deepCopy(obj[i]) : obj[i];

}

}

return arrobj;

}

let resultObj = deepCopy(obj);

resultObj["name"]="yyyyyy";

console.log(resultObj);

console.log(obj);

// 遞迴實現 樹狀陣列的推平

let objTree = {

name:"總部公司",

SelfId:1,

parentId:0,

children:[

{

name:"一層分公司1",

SelfId:2,

parentId:1,

children:[]

},

{

name:"一層分公司2",

SelfId:3,

parentId:1,

children:[

{

name:"二層分公司1",

SelfId:4,

parentId:3,

children:[]

}

]

},

]

};

let resultArray = [];

function deepChange(obj){

let myname = obj.name;

let SelfId = obj.SelfId;

let parentId = obj.parentId;

let children = obj.children;

resultArray.push({myname:myname,SelfId:SelfId,parentId:parentId});

if(children.length ==0){

return "";

}else{

for(var i = 0 ;i<children.length;i++){

deepChange(children[i]);

}

}

}

deepChange(objTree);

console.log(resultArray)

</script>