无法嵌套forEach在Javascript中工作

时间:2015-03-19 16:33:44

标签: javascript arrays foreach nested

所以我猜这个标题是自我解决的。我有一些嵌套forEach循环的代码。循环遍历chapter个对象的数组。每个对象可以有多个子节点,它们也可以有多个子节点,依此类推。

我想最终得到一个包含带子节点的嵌套数组的数组。

到目前为止,我的代码看起来像这样:

exports.chapter = function(req, res) {
    var chapters = [],
        result = [];

    chapters = exports.index(req, res);

    chapters.forEach(function(chapter) {
        if(chapter.orphan){
            result.add({
                'chapter': chapter,
                'children': getChildren(chapter.children)
            });
        }
    });

    function getChildren(siblings) {
        var children = [];

        chapters.forEach(function(chapter) {
            if($.inArray(chapter, siblings)){
                children.add({
                    'chapter': chapter,
                    'children': getChildren(chapter.children)
                });
            }
        });

        return children;
    };
};

除了我的页面没有加载,我没有收到任何错误。它在我的控制台中没有写任何东西。我认为这是设置中的一个问题,但我目前无法找到问题所在。真的希望你们能帮忙。

2 个答案:

答案 0 :(得分:3)

最有可能出现的问题是:

if($.inArray(chapter, siblings)){

$.inArray是一个可怕错误的方法:它返回索引,如果找不到则返回-1,而不是名称所暗示的标志。 -1当然是真实的;和0(有效索引)是假的,所以你的if可能想成为

if($.inArray(chapter, siblings) != -1){
    // We found it...
}

或可能

if($.inArray(chapter, siblings) == -1){
    // We didn't find it
}

答案 1 :(得分:1)

有点奇怪..我不明白为什么你要使用'添加'而不是推动'方法。如果我尝试添加"数组的对象我得到一个常见的错误。不是吗?