この記事は bouzuya's RxJS Advent Calendar 2015 の 14 日目です。
はじめに
今日は ReactiveX の Operators to Convert Observables について RxJS の API ドキュメントを読んだりサンプルコードを書いたりしていきます。
また RxJS 4.0.7 を対象にしています。
Operators to Convert Observables
Observable.prototype.toArray
- ReactiveX - To operator
Observable.prototype.toArray
API DocumentObservable.prototype.toArray
Source Code
流れるデータを Array
にまとめて流します。
import { Observable } from 'rx';
Observable
.from([1, 2, 3])
.toArray()
.subscribe(
value => console.log(`onNext: ${value}`),
error => console.log(`onError: ${error}`),
() => console.log('onCompleted')
);
// onNext: 1,2,3
// onCompleted
特に難しくないです。これで相互変換できるので、以下のようなこともできます、意味はないですが。
import { Observable } from 'rx';
Observable
.from([1, 2, 3]) // -3-2-1->
.toArray() // -[1,2,3]->
.flatMap(array => Observable.from(array)) // -3-2-1->
.subscribe(
value => console.log(`onNext: ${value}`),
error => console.log(`onError: ${error}`),
() => console.log('onCompleted')
);
// onNext: 1
// onNext: 2
// onNext: 3
// onCompleted
Observable.prototype.toMap
ES6 Map に変換します。
import { Observable } from 'rx';
Observable
.from([1, 2, 3])
.toMap(value => `key${value}`)
.map(map => Array.from(map.keys()).map(k => `${k}:${map.get(k)}`))
.subscribe(
value => console.log(`onNext: ${value}`),
error => console.log(`onError: ${error}`),
() => console.log('onCompleted')
);
// onNext: key1:1,key2:2,key3:3
// onCompleted
特に言うことはないです。
Observable.prototype.toSet
ES6 Set に変換します。
import { Observable } from 'rx';
Observable
.from([1, 2, 3, 2])
.toSet()
.map(set => Array.from(set.values()))
.subscribe(
value => console.log(`onNext: ${value}`),
error => console.log(`onError: ${error}`),
() => console.log('onCompleted')
);
// onNext: 1,2,3
// onCompleted
特に言うことはないです。
おわりに
ReactiveX の Operators to Convert Observables を見ました。
どうということはないですね。