拿来主义,11代码递归做无限分类

这不是一篇原创,网上找来,实在太好用,所以分享出来

原文链接:http://cnodejs.org/topic/5246ff67f29c7bbd3c86fe6c

演示

拿来主义,11代码递归做无限分类_第1张图片
tree.gif

用途

做element ui上tree列表

递归代码

function test(categoryJSON, pid) {
    var rtn = [];
    for (var i in categoryJSON) {
        if ((categoryJSON[i].pid == pid)) {
            var recursion = test(categoryJSON, categoryJSON[i].objectId);
            if (recursion.length > 0) {
                categoryJSON[i].children = recursion;
            }
            rtn.push(categoryJSON[i]);
        }
    }
    return rtn;
}

输出

[
  {
    "title": "手机数码",
    "objectId": "5815b0d5d203090055c24a19"
    "children": [
      {
        "title": "移动电源",
        "pid": "5815b0d5d203090055c24a19",
        "objectId": "582984ef67f3560058873a3e"
        "children": [
          {
            "title": "超大容量电源",
            "pid": "582984ef67f3560058873a3e",
            "objectId": "59fe7eb1ee920a0046fe87bb"
          },
          {
            "title": "轻便型电源",
            "pid": "582984ef67f3560058873a3e",
            "objectId": "59fe7eb1ee920a0046fe87bb"
          }
        ]
      },
      {
        "title": "苹果周边",
        "pid": "5815b0d5d203090055c24a19",
        "objectId": "582984e22f301e00585ce2b7"
      }
    ]
  }
]

参考原文是这么做的,categoryJSON[i].children = test(categoryJSON, categoryJSON[i].objectId);,我这边增加了一个判断,recursion.length > 0,用来解决由于生成空数组[]而导致tree空子项的问题。

mp

你可能感兴趣的:(拿来主义,11代码递归做无限分类)