Javascript 角度9:将数组对象重新排列为嵌套数组

Javascript 角度9:将数组对象重新排列为嵌套数组,javascript,arrays,angular,nested-loops,Javascript,Arrays,Angular,Nested Loops,我正试图重新安排: 致: 我正在尝试制作树形结构的UI布局。但是我想知道如何实现数据部分的转换。也许是一厢情愿的想法,但是有没有比在循环中循环更简单的方法呢 可以使用对象作为标高的贴图来缩小阵列 const arr=[{“id”:5,“levelName”:“level1”},{“id”:6,“levelName”:“level2”},{“id”:7,“levelName”:“level3”}]; 常数res=arr.reduce((acc,obj)=>{ 让level=+obj.level

我正试图重新安排:


致:


我正在尝试制作树形结构的UI布局。但是我想知道如何实现数据部分的转换。也许是一厢情愿的想法,但是有没有比在循环中循环更简单的方法呢

可以使用对象作为标高的贴图来缩小阵列

const arr=[{“id”:5,“levelName”:“level1”},{“id”:6,“levelName”:“level2”},{“id”:7,“levelName”:“level3”}];
常数res=arr.reduce((acc,obj)=>{
让level=+obj.levelName.slice(obj.levelName.indexOf(“”)+1);
(acc[水平]=acc[水平]| |[])。推动(obj);
acc[级别+1]=acc[级别+1]| |(obj[级别]=[]);
返回acc;
}, {})[1];
控制台日志(res)
[
  {
    "id": 5,
    "levelName": "Level 1"
  },
  {
    "id": 6,
    "levelName": "Level 2"
  },
  {
    "id": 7,
    "levelName": "Level 3"
  }
]
[
  {
    "id": 5,
    "levelName": "Level 1",
    "level": [
      {
        "id": 6,
        "levelName": "Level 2",
        "level": [
          {
            "id": 6,
            "levelName": "Level 2",
            "level": []
          }
        ]
      }
    ]
  }
]