下划线 _.filter 条件

underscore _.filter condition

是否可以使用下划线做这样的事情_.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 上使用的条件无效。对不起我的错,我只是以适当的方式编辑。

filter 并不真正关心你在回调中做了什么,只要你 return 是真实的(包括当前项目)或虚假的(不包括当前项目)。

至于表达式,仅在以下情况下为真:

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

所以我们这样写:

c.Id === self.model.Id() && columnId && c.columnId === columnId

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

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

假设 'columns you specify' 被解释为 Id 属性 等于 self.model.ID()

的列

我不太确定如何处理 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;
    });
}