1
我无法弄清楚如何将平面对象与父数组变换为实际的嵌套(树)层次结构对象。它基本上都可以归结为以下问题:将平面变换为嵌套对象
我怎么能拒绝一个样本对象,如
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
需要是一个对象数组,因为我的实际使用情况稍微复杂一点,它由多个对象组成。它为manage hierarchical data in MongoDB模拟了最佳实践。
任何帮助,非常感谢。
http://plnkr.co/edit/GGIV1I0WNFGkjqyUNEof?p=preview – redmallard
非常感谢您!我甚至可以用本地['reduce'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)实现去除对Underscore的依赖,因为我只是需要支持IE9 + :) – bernhardw