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

在实现树形表格时遇到前端显示问题,决定将数据转换为树形结构后再转换回原格式。提供了一段JavaScript代码,用于根据id和pid构建及还原树结构。示例数据展示了如何处理具有层级关系的对象数组。
摘要由CSDN通过智能技术生成

最近做一个树形表格,从数据库读出来给前端后,用插件老是有一些显示的错误,可能是因为插件还需要数据按顺序排好,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 } ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值