js中,Tree树形控件数据由「数组格式」转换成「对象格式」

数组格式
数据库中通过pId维护关系

[{
    "id": 1576757423116692,
    "name": "\u57FA\u672C\u4FE1\u606F",
    "open": true,
    "icon": null,
    "iconSkin": null,
    "pId": null // 通过pId标示父节点
}, {
    "id": 1576830102194814,
    "name": "\u6D88\u606F\u67E5\u770B",
    "open": true,
    "icon": null,
    "iconSkin": null,
    "pId": 1576757423116692
}]

对象格式
Tree树形控件,通过children维护节点关系

[{
    "id": 1592539382001818,
    "name": "报表中心",
    "open": true,
    "icon": null,
    "iconSkin": null,
    "pId": null,
    "children": [{ // children嵌套
        "id": 1592539382041842,
        "name": "库存分析",
        "open": true,
        "icon": null,
        "iconSkin": null,
        "pId": 1592539382001818
    }]
}]

js中,Tree树形控件数据由「数组格式」转换成「对象格式」

 var permissionList = [{"id":1576757423116692,"name":"\u57FA\u672C\u4FE1\u606F","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830102194814,"name":"\u6D88\u606F\u67E5\u770B","open":true,"icon":null,"iconSkin":null,"pId":1576830101976741},{"id":1576738932216633,"name":"\u7269\u6599\u54C1\u724C","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576830009811502,"name":"\u6837\u54C1\u7533\u8BF7","open":true,"icon":null,"iconSkin":null,"pId":1576830009617716},{"id":1576830518754858,"name":"\u8BBF\u95EE\u65F6\u95F4\u63A7\u5236","open":true,"icon":null,"iconSkin":null,"pId":1576830518507293},{"id":1576757422730815,"name":"\u7269\u6599\u4FE1\u606F","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576900467172242,"name":"DICETYPE","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331048506,"name":"\u7269\u6599\u5206\u7C7B","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1592539382001422,"name":"\u51FA\u8D27\u7EC6\u5316-\u5BA2\u6237\u7EDF\u8BA1","open":true,"icon":null,"iconSkin":null,"pId":1592539382001821},{"id":1576830009915354,"name":"\u4EF7\u683C\u7533\u8BF7","open":true,"icon":null,"iconSkin":null,"pId":1576830009617716},{"id":1576830102324678,"name":"\u53D1\u5E03\uFF0F\u7F16\u8F91\u6D88\u606F","open":true,"icon":null,"iconSkin":null,"pId":1576830101976741},{"id":1576830009617716,"name":"\u7533\u8BF7","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576830518754859,"name":"\u6B63\u80FD\u91CF\u8D26\u53F7\u8BBE\u7F6E","open":true,"icon":null,"iconSkin":null,"pId":1576830518507293},{"id":1576830331048502,"name":"\u7269\u6599\u578B\u53F7","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1592539382041842,"name":"\u5E93\u5B58\u5206\u6790","open":true,"icon":null,"iconSkin":null,"pId":1592539382001818},{"id":1576830101976741,"name":"\u6D88\u606F\u4E2D\u5FC3","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576830518754260,"name":"\u56FD\u5185\u4ED3\u9501\u8D27\u6743\u9650","open":true,"icon":null,"iconSkin":null,"pId":1576830518507293},{"id":1592539382001842,"name":"\u51FA\u8D27\u62A5\u8868","open":true,"icon":null,"iconSkin":null,"pId":1592539382001818},{"id":1592539382005822,"name":"\u51FA\u8D27\u7EC6\u5316-\u51FA\u8D27\u5360\u6BD4","open":true,"icon":null,"iconSkin":null,"pId":1592539382001821},{"id":1576830331258625,"name":"\u7269\u6599\u56FD\u5185\u5E93\u5B58","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576830102433969,"name":"\u5220\u9664\u6D88\u606F","open":true,"icon":null,"iconSkin":null,"pId":1576830101976741},{"id":1576830010022199,"name":"\u5F00\u53D1\u5DE5\u5177\u7533\u8BF7","open":true,"icon":null,"iconSkin":null,"pId":1576830009617716},{"id":1576829852480747,"name":"\u5B98\u65B9\u4EA4\u671F","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331474734,"name":"\u672C\u5E74\u5EA6\u51FA\u8D27\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1592539382001821,"name":"\u51FA\u8D27\u7EC6\u5316","open":true,"icon":null,"iconSkin":null,"pId":1592539382001818},{"id":1577173031332586,"name":"\u5E93\u5B58","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830518754261,"name":"\u4F9B\u5E94\u94FE\u0026\u5E93\u5B58\u9884\u8B66\u6BD4\u4F8B","open":true,"icon":null,"iconSkin":null,"pId":1576830518507293},{"id":1592539382001818,"name":"\u62A5\u8868\u4E2D\u5FC3","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576830160797318,"name":"\u4EF7\u683C\u8BBE\u7F6E","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576829852861737,"name":"\u8FDB\u4EF7","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331363807,"name":"\u4E0A\u5E74\u5EA6\u51FA\u8D27\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576830334048506,"name":"\u5E02\u573A\u65B9\u5411","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576738931829860,"name":"\u6570\u636E\u540C\u6B65","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576830331258621,"name":"\u9999\u6E2F\u4ED3","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576830397532753,"name":"\u6743\u9650\u7BA1\u7406","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1576830331258622,"name":"\u9999\u6E2F\u76F4\u8FD0\u4ED3","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1577157938152502,"name":"\u62A5\u4EF7","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331258623,"name":"\u5728\u9014\u5E93\u5B58\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576830518507293,"name":"\u7CFB\u7EDF\u8BBE\u7F6E","open":true,"icon":null,"iconSkin":null,"pId":null},{"id":1577173031603937,"name":"\u62A5\u4EF7\u53C2\u8003","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331258620,"name":"\u4F9B\u5E94\u94FE\u672A\u5B8C\u6210\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1577157937807987,"name":"\u5F00\u53D1\u5DE5\u5177","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576830331258633,"name":"\u5BA2\u6237\u7AEF\u672A\u5B8C\u6210\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576738931829860},{"id":1576829852988791,"name":"\u5386\u53F2\u51FA\u8D27\u6570\u91CF","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576757423116672,"name":"\u7F16\u8F91\u4E3B\u63A8\u578B\u53F7","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576757423116673,"name":"\u7F16\u8F91\u89C6\u9891","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815},{"id":1576757423116675,"name":"\u6D4F\u89C8\u89C6\u9891","open":true,"icon":null,"iconSkin":null,"pId":1576757422730815}]

function parse(data) {
    let children = ret(data, null)

    function ret(_data, pid) {
        let _children = []
        let otherNode = []
        _data.forEach(node => {
            if (node.pId === pid) {
                _children.push(node)
            } else {
                otherNode.push(node)
            }
        })

        if (_children.length > 0) {
            // 排序
            _children = _children.sort(sort)

            _children.forEach(_node => {
                let node_child = ret(otherNode, _node.id)
                if (node_child.length > 0) {
                    _node.children = node_child
                }

            })   
        }
        return _children
    }

    function sort(a, b) { // 自定义排序规则
        return b.id - a.id
    }

    return children    
}

let formatData = parse(permissionList)

console.log(JSON.stringify(formatData))