我无法弄清楚如何将具有父数组的平面对象转换为实际的嵌套(树)层次结构对象。它基本上归结为以下问题:
如何转动样本对象,例如
var sample = {
name: '1.1.1.1',
parents: [{
name: '1.1.1'
}, {
name: '1.1'
}, {
name: '1'
}]
};
...有效地进入以下结果:
var result = [{
name: '1',
children: [{
name: '1.1',
children: [{
name: '1.1.1',
children: [{
name: '1.1.1.1'
}]
}]
}]
}];
名称是任意选择的,sample
理论上可以无限深度。
不幸的是,result
和children
需要是一个对象数组,因为我的实际用例稍微复杂一些,包含多个sample
个对象。它将最佳实践建模为manage hierarchical data in MongoDB。
非常感谢任何帮助。
答案 0 :(得分:0)
var result = _.reduce(sample.parents, function(memo, node) {
node.children = [memo];
return node;
}, {name: sample.name});