我无法弄清楚如何将具有父级数组的平面对象转换为实际的嵌套(树)层次结构对象。基本上都可以归结为以下问题:
如何转动示例对象,例如
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的最佳实践。 .
非常感谢任何帮助。
最佳答案
使用Underscore.js :
var result = _.reduce(sample.parents, function(memo, node) {
node.children = [memo];
return node;
}, {name: sample.name});
关于javascript - 将平面转换为嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158323/