将flat变换为嵌套对象

时间:2014-03-03 21:56:53

标签: javascript nested

我无法弄清楚如何将具有父数组的平面对象转换为实际的嵌套(树)层次结构对象。它基本上归结为以下问题:

如何转动样本对象,例如

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理论上可以无限深度。

不幸的是,resultchildren需要是一个对象数组,因为我的实际用例稍微复杂一些,包含多个sample个对象。它将最佳实践建模为manage hierarchical data in MongoDB

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用Underscore.js

var result = _.reduce(sample.parents, function(memo, node) {
    node.children = [memo];
    return node;
}, {name: sample.name});