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

最近做一个树形表格,从数据库读出来给前端后,用插件老是有一些显示的错误,可能是因为插件还需要数据按顺序排好,so就有了这种转树再转回来的奇葩想法

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
    }

}

[ { Id: 1, Key: 'params', Value: '', Pid: -1 },
  { Id: 3, Key: 'filter', Value: '', 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 },
  { Id: 2, Key: 'method', Value: 'Post|Get', Pid: 1 } ]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,795评论 25 709
  • 1. 学习 a)看TED演讲关于leadership 的几个视频。 其中关于如何成为leader 提到了几个重要要...
    智慧生活SmartLiving阅读 462评论 0 0
  • 入坑已满一年,看着它们从暖春走到酷夏,从清秋走到寒冬,现在又要从春天奔向初夏,从满园菜色到姹紫嫣红,它们就这么不慌...
    清风吟诗阅读 316评论 2 3
  • 要多久才能学会自己给自己披一件保暖的外衣,我们很多次因为忘却了跟自己说说悄悄话,让生活琐事所绑架,同时现实的残忍也...
    换氧阅读 562评论 1 1
  • 喜欢欣频老师5年,从印象深刻的文案开始,到从欣频老师的书中找到指引与帮助,欣频老师对我来说,是非常亲密的朋友,即使...
    Christy星球阅读 199评论 0 0