之前here和here曾问过类似的问题,还有npm-packages 但-我无法找到JavaScript代码段或npm软件包,可以保留孩子的顺序
考虑以下数据结构:
var nodes = [{id: 'a', parent: null, children: ['c', 'b']},
{id: 'b', parent: 'a', children: []},
{id: 'c', parent: 'a', children: []}]
我想要一个这样的嵌套对象:
var tree = {id: 'a', parent: null, children: [
{id: 'c', parent: 'a', children: []},
{id: 'b', parent: 'a', children: []}
]}
重要的事实是,由于 a 的子级顺序是 c,b ,因此嵌套的结果 children 数组结构将保留顺序。
答案 0 :(得分:2)
如果您先构建地图,这非常简单:
const nodeById = new Map(nodes.map(el => [el.id, el]));
然后,您可以轻松构建树:
let root;
for(const node of nodes) {
node.children = node.children.map(id => nodeById.get(id));
if(!node.parent) root = node;
}