Javascript 将仅包含级别ID的有序元素转换为父/子结构

Javascript 将仅包含级别ID的有序元素转换为父/子结构,javascript,Javascript,假设我有一个有序对象数组,如: var arr = [ {levelId: 0, name: 'A'}, {levelId: 1, name: 'B'}, {levelId: 2, name: 'C'}, {levelId: 2, name: 'D'}, {levelId: 3, name: 'E'}, {levelId: 1, name: 'F'}, {levelId: 0, name: 'G'}, {levelId: 1, name: 'H'}

假设我有一个有序对象数组,如:

var arr = [
   {levelId: 0, name: 'A'},
   {levelId: 1, name: 'B'},
   {levelId: 2, name: 'C'},
   {levelId: 2, name: 'D'},
   {levelId: 3, name: 'E'},
   {levelId: 1, name: 'F'},
   {levelId: 0, name: 'G'},
   {levelId: 1, name: 'H'}
];
所以它们在数组中的顺序对它们的结构很重要,所以

A -> B -> C
A -> B -> D -> E
A -> F
G -> H
有没有一种好方法可以将其转换为具有父子关系的良好结构?谷歌搜索了2个小时,但没有找到任何好的结果

这里有一个例子

const newArr=[{
levelId:0,
名称:‘A’,
儿童:[{
级别ID:1,
名称:‘B’,
儿童:[{
级别ID:2,
名称:‘C’,
儿童:[]
},
{
级别ID:2,
名称:“D”,
儿童:[{
级别ID:3,
名称:“E”
}]
}
]
},
{
级别ID:1,
名称:“F”,
儿童:[]
}
]
},
{
levelId:0,
名称:“G”,
儿童:[{
级别ID:1,
名称:‘H’,
儿童:[]
}]
}
]

}
您可以为级别设置一个数组,为嵌套对象设置一个对象作为结果,以反映给定的数据

var数组=[{levelId:0,名称:'A'},{levelId:1,名称:'B'},{levelId:2,名称:'D'},{levelId:3,名称:'E'},{levelId:1,名称:'F'},{levelId:0,名称:'G'},{levelId:1,名称:'H'},
结果={},
级别=[结果];
array.forEach(({levelId,name})=>
levels[levelId][name]=levels[levelId][name]| |(levels[levelId+1]={})
);
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
您能提供更多关于您想要实现的方法的详细信息吗?从解释/找到您想要的结构开始。然后解决将输入转换为该结构的问题。那么,在这里,您是在寻求有关结束结构的建议,还是如何转换?很抱歉,我的意思含糊不清!不,我知道我想要什么样的结尾结构。类似这样的内容:(太长,无法发布)。这是为了以后在ngFor循环中与Angular一起使用,这正是我想要的!非常感谢你!(比我想出来的要短得多:))声望太低,无法正式投票,但说它已经被录制了。实际上,现在我开始制作它,我需要它是一个包含对象的数组,如果它们有子对象,则需要添加一个包含子对象的数组,等等。。(就像我编辑的问题上的例子)。我正试图更改您的代码,使其能够像这样工作,但我不太理解以下部分:levels[levelId][name]=levels[levelId][name]| |(levels[levelId+1]={})您能解释一下吗?:)