当我有对象流时,例如
values = Bacon.fromArray([ {'status':"active"}, {'status':"inactive"} ]);
我可以应用一个短格式过滤器,如下所示:
activeStates = values.filter( ".status", "active" );
但是当原始流仅包含基元时:
states = Bacon.fromArray( ["active", "inactive" ] );
然后,我将无法再使用该形式,而必须编写一个函数文字。我尝试使用
"."
,""
,null
作为属性名称参数,但这不起作用。我可以这样定义一个函数:
function equals( val ){
return function( obj ){
return obj === val;
}
}
然后写:
activeStates = values.filter( equals( "active" ) );
这是我能做的最好的吗?还是有我缺少的培根函数,或者是一个通用的lodash函数使我不必编写自己的
equals
函数? 最佳答案
您可以使用Bacon.matchers库来实现此类过滤器。
Bacon.fromArray( ["active", "inactive" ] )
.where().equalTo("active")
.onValue(function(val) {
document.body.innerHTML += val
})
JsFiddle