javascript Underscore嵌套循环未定义的值

时间:2014-02-24 10:14:03

标签: javascript loops backbone.js for-loop underscore.js

假设我有一个名为集合的集合集合。现在,让我们考虑一下这段代码。

_.each(collections, function(collection){
        _.each(collection, function(item){
           console.log(item);
        }
});

多次打印未定义的值。它似乎在从上一个循环实际设置之前打印项目值。为什么不保留执行顺序?

提前致谢。

2 个答案:

答案 0 :(得分:1)

collectionscollection普通数组吗?或者他们是Backbone.Collection

您描述的行为不是下划线中的错误。它应该按照您的预期维护执行顺序。这可能是集合中数据的问题。

如果要在运行.each之前从集合中删除所有未定义的值,可以使用_.compact(array)(假设它们是普通的javascript数组)

_.each(_.compact(collections), function(collection){
    _.each(_.compact(collection), function(item){
        console.log(item);
    }
});

答案 1 :(得分:0)

我想这只是因为内部循环也异步运行它的回调。因此,父循环不会等待它完成,它会在下一次迭代中直接运行。