根据id,pid生成树结构,再生成id,pid形式

var data = [{
    "Id": 1,
    "Key": "params",
    "Value": "",
    "Pid": -1
}, {
    "Id": 3,
    "Key": "filter",
    "Value": "",
    "Pid": 1
}, {
    "Id": 2,
    "Key": "method",
    "Value": "Post|Get",
    "Pid": 1
}, {
    "Id": 4,
    "Key": "$and",
    "Value": "",
    "Pid": 3
}, {
    "Id": 6,
    "Key": "it:pt",
    "Value": "@it:pt",
    "Pid": 4
}, {
    "Id": 5,
    "Key": "bo:well",
    "Value": "@bo:well",
    "Pid": 4
}]
console.log(readTree(getTree(data, -1)[0], []))
//转成树
function getTree(data, Pid) {
    let result = []
    let temp
    for (let i = 0; i < data.length; i++) {
        if (data[i].Pid == Pid) {
            temp = getTree(data, data[i].Id)
            if (temp.length > 0) {
                data[i].children = temp
            }
            result.push(data[i])
        }
    }
    return result
}

//树再转回来
function readTree(data, val) {
    val.push({
        Id: data.Id,
        Key: data.Key,
        Value: data.Value,
        Pid: data.Pid

    })
    if (data.children) {
        for (let i = 0; i < data.children.length; i++) {
            readTree(data.children[i], val)
        }
        return val
    }

}

 参考链接: https://www.jianshu.com/p/18cf3feb833d

posted @ 2021-02-22 10:07  新上小菜鸟  阅读(811)  评论(0编辑  收藏  举报