当我有对象流时,例如

 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

10-08 02:12