从树上取一级孩子

时间:2016-08-26 13:20:29

标签: javascript

我有以下树形结构:

var struct = {
    name: 'folder1',
    type: 'folder',
    children: [
        {
            name: 'child1',
            type: 'child',
            children: []
        },
        {
            name: 'child2',
            type: 'child',
            children: []
        },
        {
            name: 'folder2',
            type: 'folder',
            children: []
        },
        {
            name: 'folder3',
            type: 'folder',
            children: [
                {
                    name: 'child3',
                    type: 'child',
                    children: []
                }
            ]
        }
    ]
};

我希望得到一个儿童文件夹的地图,但没有任何嵌套的孩子。

对于上面的结构,对于folder1,我应该只获得child1child2folder2folder3,而不是嵌套在最后{{1}内}}

我该怎么做?

现在我有以下代码:

child3

它有效,但它让我得到了所有嵌套元素。

EDIT。

var getMap = function (data, map) {
        var elements = document.createDocumentFragment();
        for (var i in data) {
            var nameId = data[i].name.split(' ').join('');
            if (data[i].type == "child") {
                var element = something;
            } else {
                var element = somethingElse;
            }
            elements.appendChild(element);
            if (data[i].type === "folder") {
                var element = createMainElement(getMap(data[i].children, map));
                map[data[i].id] = element.innerHTML;
                elements.appendChild(element);
            }
        }
        return elements;
    };

这是小提琴 - folder1不应该在控制台日志中包含child3。

1 个答案:

答案 0 :(得分:0)

循环你的“struct”var的children属性,你只能得到第一级的孩子

struct.children.forEach(function(child){
   console.log(child.name)
});

希望这有帮助。