Javascript 使用对象数组(与子对象递归)构建一个对象
也许有人能帮上忙 我想做的是:Javascript 使用对象数组(与子对象递归)构建一个对象,javascript,arrays,object,reduce,Javascript,Arrays,Object,Reduce,也许有人能帮上忙 我想做的是: 构建一个结果对象,该对象由数组中所有这些对象的所有属性/子对象组成 结果对象中始终只有数组 递归地构建这个对象(因为我不知道有多少层,也不知道对象的名称) 属性的顺序不相关 某些属性(如id)的可管理例外/黑名单 const arr=[{ id:0, 昵称:“Testnick 0”, 洛尔:{ 很好:“喜欢它”, }, 评级:{ abc:5, helloworld:2, }, }, { id:1, 昵称:“Testnick 2”, 评级:{ abc:4, m
- 构建一个结果对象,该对象由数组中所有这些对象的所有属性/子对象组成
- 结果对象中始终只有数组
- 递归地构建这个对象(因为我不知道有多少层,也不知道对象的名称)
- 属性的顺序不相关
- 某些属性(如id)的可管理例外/黑名单
const arr=[{
id:0,
昵称:“Testnick 0”,
洛尔:{
很好:“喜欢它”,
},
评级:{
abc:5,
helloworld:2,
},
},
{
id:1,
昵称:“Testnick 2”,
评级:{
abc:4,
moep:1,
},
},
{
id:2,
昵称:“Testnick 3”,
评级:{
abc:40,
孙:20,,
另一个目标:{
tr:34,
子对象:{
sd:24,
},
},
},
},
];代码>您可以减少给定数组,并针对嵌套对象递归迭代对象的键和值
函数设置值(目标、源){
Object.entries(source.forEach([k,v])=>{
if(v&&typeof v=='object'){
设置值(目标[k]=目标[k]|{},v);
}否则{
目标[k]=目标[k]| |[];
目标[k]。推送(v);
}
});
回报目标;
}
var data=[{id:0,昵称:“Testnick 0”,loel:{nice:'like it'},评级:{abc:5,helloworld:2},{id:1,昵称:'Testnick 2',评级:{abc:4,moep:1},{id:2,昵称:'Testnick 3',评级:{abc:40,sun:20,其他评级:{tr 34,subsubobj:{sd:24}],
结果=data.reduce(setValues,{});
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
到目前为止您尝试了什么?使用常量值来完成此操作,但由于我不知道级别数量和属性名称,需要找出另一种方法给我类型错误:target[k]。push有时不是函数,需要调试。但是谢谢。