我有一个这样的数组数据:data:[{nameEn:'QQQ',defaultValue:'1111',type:'String',id:'1',parentId:''},{nameEn:'www',defaultValue:'2222',type:'Array',id:'2',parentId:'',children:[{nameEn:'www1',defaultValue:'333',type:'Array',id:'2.1',parentId:'2',children:[{nameEn:'www11',defaultValue:'444',type:'Number',id:'2.1.1',parentId:'2.1',},{nameEn:'www14',defaultValue:'1234325464',type:'Array',id:'2.1.2',parentId:'2.1',children:[{nameEn:'www141',defaultValue:'2321414',type:'Number',id:'2.1.2.1',parentId:'2.1.2',},{nameEn:'www142',defaultValue:'2222222',type:'Number',id:'2.1.2.2',parentId:'2.1.2',}]}]},{nameEn:'www2',defaultValue:'33344',type:'Object',id:'2.2',parentId:'2',children:[{nameEn:'www21',defaultValue:'44445454',type:'Number'}]}]},{nameEn:'QQQ222',defaultValue:'33333',type:'String',id:'3',parentId:''}]现在我需要把这个数组数据转换成如下格式的Object数据:{QQQ:'1111',www:[{www1:[{www11:444},{www14:[www141:2321414,www142:2222222]}],}{www21:44445454}],QQQ222:'33333}我自己的代码没了。。所以没法贴我自己的代码上来,如果有大神之前做过的话,请教一下如何做这个递归。---补充---我想要的效果是区分{}和[]两种类型的
2 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
functiontransfer(root,v){let{nameEn:key}=vif(v.children&&v.children.length){lettarget={};v.children.forEach(child=>{transfer(target,child);})root[key]=target;}else{root[key]=v.defaultValue;}}letresult={};data.forEach(v=>{transfer(result,v);})console.log(result);
万千封印
TA贡献1891条经验 获得超3个赞
functionhandle(arr){varresult={};arr.forEach(function(obj){result[obj.nameEn]=obj.children?handle(obj.children):obj.defaultValue;});returnresult;}console.log(handle(data));
添加回答
举报
0/150
提交
取消