Angular 9 : 将数组对象重新排列为嵌套数组

Angular 9 : Rearrange array object into nested array

我正在尝试重新安排:


[
  {
    "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": []
          }
        ]
      }
    ]
  }
]

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

您可以使用对象作为级别的映射来减少数组。

const arr = [ { "id": 5, "levelName": "Level 1" }, { "id": 6, "levelName": "Level 2" }, { "id": 7, "levelName": "Level 3" } ];
const res = arr.reduce((acc,obj)=>{
  let level = +obj.levelName.slice(obj.levelName.indexOf(' ') + 1);
  (acc[level] = acc[level] || []).push(obj);
  acc[level + 1] = acc[level + 1] || (obj['level'] = []);
  return acc;
}, {})[1];
console.log(res);