Javascript 下划线过滤条件
是否可以使用下划线u.filter执行类似操作Javascript 下划线过滤条件,javascript,underscore.js,Javascript,Underscore.js,是否可以使用下划线u.filter执行类似操作 self.getCols = function (columnId) { return cols = _.filter(self.model.cols(), function(c) { return ( (c.Id === self.model.Id()) && ((columnId === undefined) ? '' : c.columnId === columnId)
self.getCols = function (columnId) {
return cols = _.filter(self.model.cols(), function(c) {
return (
(c.Id === self.model.Id()) &&
((columnId === undefined) ? '' : c.columnId === columnId)
);
});
})
现在我在columnId上使用的条件无效。抱歉,我的错误,我只是以正确的方式进行了编辑。
过滤器
并不真正关心您在回调中执行的操作,只要您返回truthy(包括当前项)或falsy(不包括当前项)
至于表达式,只有在以下情况下才是正确的:
c.Id==self.model.Id()
存在columnId
等于columndId
c.columnId
c.Id === self.model.Id() && columnId && c.columnId === columnId
在这种情况下,您的回报应该是(我认为):
这是假设“您指定的列”被解释为具有
Id
属性等于self.model.Id()
的列,但我不确定如何处理self.model.Id()
,但我认为这与您描述的内容(包括注释)是一致的:
您能否提供更多关于您试图通过列ID筛选实现什么的上下文。还有
self.model
?如果columnId未定义,我希望self.model.cols()中的所有列,否则只带来我指定的一列。寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。如果c.Id!==self.model.Id()?
return c.columnID || c.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;
});
}