我有一个看起来像这样的数组
[
{
name: 'foo'
filter: Observable.of(true)
},
{
name: 'bar'
filter: Observable.of(false)
}
]
并且我只想返回 filter
解析为 true 的项目,我将如何以最有效和 react 性的方式做到这一点?我正在使用 rxjs5 beta2。
请注意,为了简单起见,这是一个伪代码,在我的实际情况中,过滤器实际上是一个对象,它被传递给验证函数,该函数返回一个解析为 true
或 false 的可观察对象
.
最佳答案
您可以将数组中的每个项目平面映射到一个 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/