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

我有一个这样的数组数据:
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
}
我自己的代码没了。。所以没法贴我自己的代码上来,如果有大神之前做过的话,请教一下如何做这个递归。
---补充---我想要的效果是区分{}和[]两种类型的
撒科打诨
浏览 242回答 2
2回答

噜噜哒

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

万千封印

functionhandle(arr){varresult={};arr.forEach(function(obj){result[obj.nameEn]=obj.children?handle(obj.children):obj.defaultValue;});returnresult;}console.log(handle(data));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript