如何解决如何将平面多分支数据转换为分层JSON?
我建议您创建一棵树并将其id === pid
作为树的根,这适用于未排序的数据。
这个怎么运作:
基本上,对于数组中的每个对象,都需要像
id
构建新对象一样使用来构建parentid
新对象。例如:
{ "id": 6, "pid": 4 }
"6": { "id": 6, "pid": 4 }
然后用
pid
:"4": { "children": [ { "id": 6, "pid": 4 } ] },
在对所有对象进行类似处理的同时,我们最终得到了一棵树。
如果为
id === pid
,则找到根节点。这是以后返回的对象。
var data = [
{ "id": "f", "pid": "b", "name": "F" },
{ "id": "e", "pid": "c", "name": "E" },
{ "id": "d", "pid": "c", "name": "D" },
{ "id": "c", "pid": "b", "name": "C" },
{ "id": "a", "pid": "a", "name": "A" },
{ "id": "b", "pid": "a", "name": "B" }
],
tree = function (data) {
var r, o = Object.create(null);
data.forEach(function (a) {
a.children = o[a.id] && o[a.id].children;
o[a.id] = a;
if (a.id === a.pid) {
r = a;
} else {
o[a.pid] = o[a.pid] || {};
o[a.pid].children = o[a.pid].children || [];
o[a.pid].children.push(a);
}
});
return r;
}(data);
console.log(tree);
解决方法
[
{
"id": "a","pid": "a","name": "AA",},{
"id": "b","name": "BB",{
"id": "c","name": "CC",{
"id": "x","pid": "b","name": "XX",}
]
上面是我从数据库中获得的数据。每个人都有一个id
和一个pid
,pid
指向该人的较高级别的人id
。如果一个人的水平最高,则id
等于pid
。
我想将原始数据转换为分层JSON,如下所示:
[
{
"id": "a","child": [
{
"id": "b","name": "BB"
"child": [
{
"id": "x","name": "XX"
}
]
},{
"id": "c","name": "CC"
}
]
}
]
我正在使用Node.js。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。