在 JavaScript 中将树从 DB 格式转换为 JSON 格式
javascriptweb developmentfront end technologyobject oriented programmingjson
假设,我们有一个像这样的对象数组 −
const arr = [
{"id":7,"name":"Kuwait","parentId":2},
{"id":4,"name":"Iraq","parentId":2},
{"id":10,"name":"Qatar","parentId":2},
{"id":2,"name":"Middle East","parentId":1},
{"id":3,"name":"Bahrain","parentId":2},
{"id":6,"name":"Jordan","parentId":2},
{"id":8,"name":"Lebanon","parentId":2},
{"id":1,"name":"Africa/Middle East","parentId":null}, {"id":5,"name":"Israel","parentId":2},
{"id":9,"name":"Oman","parentId":2}
];
我们需要编写一个 JavaScript 函数,该函数接受一个这样的数组。然后,该函数应准备一个新数组,其中包含根据其父级分组的对象。
因此,输出应如下所示 −
const output = [
{"id":55,"text":"Africa/Middle East","children":[
{"id":2,"text":"Middle East","children":
[{"id":7,"name":"Kuwait","children":[]},
{"id":4,"name":"Iraq","children":[]},
{"id":10,"name":"Qatar","children":[]},
{"id":3,"name":"Bahrain","children":[]},
{"id":6,"name":"Jordan","children":[]},
{"id":8,"name":"Lebanon","children":[]},
{"id":5,"name":"Israel","children":[]},
{"id":9,"name":"Oman","children":[]}]}
];
示例
const arr = [
{"id":7,"name":"Kuwait","parentId":2},
{"id":4,"name":"Iraq","parentId":2},
{"id":10,"name":"Qatar","parentId":2},
{"id":2,"name":"Middle East","parentId":1},
{"id":3,"name":"Bahrain","parentId":2},
{"id":6,"name":"Jordan","parentId":2},
{"id":8,"name":"Lebanon","parentId":2},
{"id":1,"name":"Africa/Middle East","parentId":null}, {"id":5,"name":"Israel","parentId":2},
{"id":9,"name":"Oman","parentId":2} ];
const transformTree = (data, root = null) => {
const res = [];
const map = {};
data.forEach((el) => {
el.children = map[el.id] && map[el.id].children || [];
map[el.id] = el; if (el.parentId === root) {
res.push(el);
}
else {
map[el.parentId] = map[el.parentId] || {};
map[el.parentId].children = map[el.parentId].children || []; map[el.parentId].children.push(el);
};
});
return res;
};
console.log(JSON.stringify(transformTree(arr), undefined, 4));
输出
控制台中的输出将是 −
[
{ "id": 1,
"name": "Africa/Middle East",
"parentId": null,
"children": [
{
"id": 2,
"name": "Middle East",
"parentId": 1,
"children": [
{
"id": 7,
"name": "Kuwait",
"parentId": 2,
"children": []
},
{
"id": 4,
"name": "Iraq",
"parentId": 2,
"children": []
},
{
"id": 10,
"name": "Qatar",
"parentId": 2,
"children": []
}, {
"id": 3,
"name": "Bahrain",
"parentId": 2,
"children": []
},
{
"id": 6,
"name": "Jordan",
"parentId": 2,
"children": []
}, {
"id": 8,
"name": "Lebanon",
"parentId": 2,
"children": []
}, {
"id": 5,
"name": "Israel",
"parentId": 2,
"children": []
}, {
"id": 9,
"name": "Oman",
"parentId": 2,
"children": []
}
]
}
]
}
]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

