0

私はこのような配列を持っています

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

そして、解決が真であるアイテムのみを返したいのですfilterが、最も効率的で反応的な方法でそれを行うにはどうすればよいですか? rxjs5 beta2 を使用しています。


簡単にするための擬似コードであることに注意してください。私の実際のケースでは、フィルターは実際にはオブジェクトであり、検証関数に渡され、trueまたはで解決されるオブザーバブルを返しますfalse

4

2 に答える 2

1

filter配列内の各アイテムを、 type のプロパティをプロパティにObservable<bool>置き換えたバージョンのアイテムを出力する Observable ストリームに flatMap することができ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));
于 2016-03-07T16:24:13.300 に答える