为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们遇到过这个问题吗?请教一个复杂数组如何转换成object对象

大佬们遇到过这个问题吗?请教一个复杂数组如何转换成object对象

撒科打诨 2019-08-05 22:52:42
我有一个这样的数组数据: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}=v
if(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);
                            
查看完整回答
反对 回复 2019-08-05
?
万千封印

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));
                            
查看完整回答
反对 回复 2019-08-05
  • 2 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信