微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将平面多分支数据转换为分层JSON?

如何解决如何将平面多分支数据转换为分层JSON?

我建议您创建一棵树并将其id === pid作为树的根,这适用于未排序的数据。

这个怎么运作:

基本上,对于数组中的每个对象,都需要像id构建新对象一样使用来构建parentid新对象。

例如:

{ "id": 6, "pid": 4 }

它首先使用id以下命令生成属性

"6": {
    "id": 6,
    "pid": 4
}

然后用pid

"4": {
    "children": [
        {
            "id": 6,
            "pid": 4
        }
    ]
},

在对所有对象进行类似处理的同时,我们最终得到了一棵树。

如果为id === pid,则找到根节点。这是以后返回的对象。

var data = [

        { "id": "f", "pid": "b", "name": "F" },

        { "id": "e", "pid": "c", "name": "E" },

        { "id": "d", "pid": "c", "name": "D" },

        { "id": "c", "pid": "b", "name": "C" },

        { "id": "a", "pid": "a", "name": "A" },

        { "id": "b", "pid": "a", "name": "B" }

    ],

    tree = function (data) {

        var r, o = Object.create(null);

        data.forEach(function (a) {

            a.children = o[a.id] && o[a.id].children;

            o[a.id] = a;

            if (a.id === a.pid) {

                r = a;

            } else {

                o[a.pid] = o[a.pid] || {};

                o[a.pid].children = o[a.pid].children || [];

                o[a.pid].children.push(a);

            }

        });

        return r;

    }(data);



console.log(tree);

解决方法

[
  {
    "id": "a","pid": "a","name": "AA",},{
    "id": "b","name": "BB",{
    "id": "c","name": "CC",{
    "id": "x","pid": "b","name": "XX",}
]

上面是我从数据库中获得的数据。每个人都有一个id和一个pidpid指向该人的较高级别的人id。如果一个人的水平最高,则id等于pid

我想将原始数据转换为分层JSON,如下所示:

[
  {
    "id": "a","child": [
      {
        "id": "b","name": "BB"
        "child": [
          {
            "id": "x","name": "XX"
          }
        ]
      },{
        "id": "c","name": "CC"
      }
    ]  
  }
]

我正在使用Node.js。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。