递归深拷贝对象,递归深复制对象, 递归推平树状数据结构

<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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值