强调_.filter条件

时间:2015-08-19 17:26:10

标签: javascript underscore.js

是否可以使用下划线_.filter?

执行此类操作
self.getCols = function (columnId) {
return cols = _.filter(self.model.cols(), function(c) {
    return (
            (c.Id === self.model.Id()) &&
            ((columnId === undefined) ? '' : c.columnId === columnId)           
    );
});         

};

现在我在columnId上使用的条件无效。对不起,我只是以适当的方式进行了编辑。

3 个答案:

答案 0 :(得分:0)

pop.delegate = self; 并不真正关心你在回调中做什么,只要你返回一个truthy(包括当前项)或falsy(排除当前项)。

至于表达式,只有在以下情况下才是真的:

  • filter
  • c.Id === self.model.Id()存在
  • columnId等于columndId

所以我们这样写:

c.columnId

答案 1 :(得分:0)

在这种情况下,您的回报应该是(我认为):

return c.columnID || c.Id === self.model.ID();

假设您指定了'列'被解释为Id属性等于self.model.ID()

的列

答案 2 :(得分:0)

我不确定如何处理self.model.Id(),但我认为这与您描述的内容(包括评论)有关:

self.getCols = function getCols (columnId) {
    var cols = self.model.cols();

    if (columnId === undefined) {
        return cols;
    }

    return _.filter(cols, function (c) {
        return c.columnId === columnId;
    });
}