数据排序问题

后端返回的一组对象数组,对象关键字段有Id,parentId,level层级, 上一层的id对应下一层的ParentId,返回的排列方式是12223333333334444,(数字代表层级),现在要把它处理成123333442333344 这种排序方式,要怎么做


可能没描述清楚,现在的数组是如下的方式


[{Id:10,parentId: -1,level: 1},

{Id:101,parentId: 10,level: 2},

{Id:102,parentId: 10,level: 2},

{Id:103,parentId: 10,level: 2},

{Id:111,parentId: 101,level: 3},

{Id:112,parentId: 101,level: 3},

{Id:121,parentId: 102,level: 3},

{Id:1001,parentId: 121,level: 4}]

期望排序结果是:


[{Id:10,parentId: -1,level: 1},

{Id:101,parentId: 10,level: 2},

    {Id:111,parentId: 101,level: 3},

    {Id:112,parentId: 101,level: 3},

{Id:102,parentId: 10,level: 2},

    {Id:121,parentId: 102,level: 3},

        {Id:1001,parentId: 121,level: 4},

{Id:103,parentId: 10,level: 2}]

最终的结果是根据parentId 和 Id 形成一个tree形式的数据


泛舟湖上清波郎朗
浏览 376回答 1
1回答

湖上湖

递归构建tree即可:&nbsp; &nbsp; var list = [{ Id: 10, parentId: -1, level: 1 }, { Id: 101, parentId: 10, level: 2 }, { Id: 102, parentId: 10, level: 2 }, { Id: 103, parentId: 10, level: 2 }, { Id: 111, parentId: 101, level: 3 }, { Id: 112, parentId: 101, level: 3 }, { Id: 121, parentId: 102, level: 3 }, { Id: 1001, parentId: 121, level: 4 }]&nbsp; &nbsp; var arr = [];&nbsp; &nbsp; function sortToGetTree(list, pid) {&nbsp; &nbsp; &nbsp; &nbsp; if (list != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i < list.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (list[i].parentId == pid) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arr.push(list[i]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sortToGetTree(list, list[i].Id);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return ;&nbsp; &nbsp; }&nbsp; &nbsp; sortToGetTree(list,list[0].Id);&nbsp; &nbsp; console.log(arr);结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript