javascript - 将平面转换为嵌套对象

标签 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的最佳实践。 .

非常感谢任何帮助。

最佳答案

使用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/

相关文章:

javascript - 使用 angular.js ui-router 单击链接时出错

python - 将 JSON 值添加到列表中

java - 嵌套列表java 8流之间的交集

dart - flutter 中的嵌套 ListViews 给出水平视口(viewport)错误

javascript - 如何获取文本区域的旧值

javascript - 如何使用javascript或jquery设置listview中hiddenfield的值

javascript - 卡在 Canvas /JS 动画中

jquery - asp.net中嵌套菜单的逻辑

javascript - AJAX:如何获取多维数组上的数组

asp.net - 在 ASP.Net 中使用 Uploadify 插件(JQuery)时出现问题