JavaScript重建线性描述的树层级1-日常笔记

自己做treegrid的时候遇到了这个问题,所以就自己遍历一下了噻。

    function convert(orgin)
    {
        var result = arguments[1] ? arguments[1] : [];
        var level = arguments[2] ? arguments[2] : 0;
        var parentid = arguments[3] ? arguments[3] : 0;
        for(var x in orgin)
        {
            if(orgin[x]["parentid"]==parentid&&orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]!=1)
            {
                orgin[x]["level"]=level;
                result.push(JSON.parse(JSON.stringify(orgin[x]))); //对象深拷贝
                orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]=1;//已经知晓层级的节点不再遍历
                if(orgin[x]["isleaf"]!=1)
                {
                   convert(orgin,result,level+1,orgin[x]["id"]);
                }
            }
        }
        return result;
    }

二、测试代码

    var orgin = [
        {
            "id": 1,
            "name": "生产管理1",
            "parentid": 0,
            "isleaf": 0
        },
        {
            "id": 2,
            "name": "生产管理2",
            "parentid": 1,
            "isleaf": 0
        },
        {
            "id": 3,
            "name": "生产管理3",
            "parentid": 2,
            "isleaf": 1
        },
        {
            "id": 4,
            "name": "生产管理4",
            "parentid": 0,
            "isleaf": 1
        },        {
            "id": 5,
            "name": "生产管理5",
            "parentid": 0,
            "isleaf": 0
        },
        {
            "id": 6,
            "name": "生产管理6",
            "parentid": 5,
            "isleaf": 1
        }
    ];
console.log(convert(orgin))

结果如下: