javascript - rxjs5 - 通过每个对象包含的可观察对象过滤对象数组

标签 javascript typescript rxjs observable rxjs5

我有一个看起来像这样的数组

[
  {
    name: 'foo'
    filter: Observable.of(true)
  },
  {
    name: 'bar'
    filter: Observable.of(false)
  }
]

并且我只想返回 filter 解析为 true 的项目,我将如何以最有效和 react 性的方式做到这一点?我正在使用 rxjs5 beta2。

<小时/>

请注意,为了简单起见,这是一个伪代码,在我的实际情况中,过滤器实际上是一个对象,它被传递给验证函数,该函数返回一个解析为 truefalse 的可观察对象.

最佳答案

您可以将数组中的每个项目平面映射到一个 Observable 流,该流将发出替换 filter 的项目的版本。类型属性Observable<bool>bool属性。

const data$ = Rx.Observable.from(arr)

  // Convert each item's filter property to type bool
  .flatMap(x => x.filter.map(condition => Object.assign({}, x, { filter: condition })))

  // Now we can just filter over the filter property, which is of type bool.
  .filter(x => x.filter)

  // Each item emitted will have a filter value of true
  .subscribe(x => console.log(x));

关于javascript - rxjs5 - 通过每个对象包含的可观察对象过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718059/

相关文章:

javascript - airtable:TypeError:无法读取在 JEST 中运行的未定义的属性 'bind'

angular - 使用 rxjs 将数据添加到 http 响应

javascript - Angular - Ngrx - 来自多个源和组件渲染的更新

RxJS (5.0rc4) : Pause and resume an interval timer

javascript - 在 Safari 中评估表达式 const 变量范围

typescript - Testcafe:出现错误:无法隐式解析测试运行

javascript - 如何使用上下键更改选择

angular - 跨多个组件传递 FormGroup

javascript - 正则表达式允许十进制数大于 0 且小于 100

javascript - 我所在的函数未定义