当值是基元时,如何使用短语法过滤流

时间:2014-11-20 10:25:39

标签: javascript bacon.js

当我有一个对象流时,例如

 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功能?

1 个答案:

答案 0 :(得分:2)

您可以使用Bacon.matchers库来实现此类过滤器。

Bacon.fromArray( ["active", "inactive" ] )
  .where().equalTo("active")
  .onValue(function(val) {
      document.body.innerHTML += val
  })

JsFiddle