情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでフィルタ処理から変換ストリームを作成する

フィルタ処理から変換ストリームを作成するにはthrough2-filterモジュールのthrough2Filter関数を使用します。

var through2Filter = require('through2-filter');

var transform = through2Filter({
    objectMode: false, 
    readableObjectMode: false, 
    writableObjectMode: false, 
    highWaterMark: 16384, 
    decodeStrings: true, 
    encoding: null, 
    allowHalfOpen: true, 
    wantStrings: true
}, function (chunk, index) {
    return true;
    //or
    return false;
});

第1引数にオプションをオブジェクトとして指定します。このオプションはstream.Transformクラスのコンストラクタの第1引数のオプションと同じです。この引数は指定しなくても構いません。

ただし、wantStringsオプションを指定することもできます。このオプションにはフィルタ処理に渡すデータを文字列化するかを真偽値として指定します。

第2引数にフィルタ処理を関数として指定します。この関数の第1引数はデータであり、第2引数はデータのインデックスです。この関数では返り値としてデータを除外しないかを真偽値として返すようにします(データを除外する場合にはfalseを返し、除外しない場合にはtrueを返すようにします)。

返り値として変換ストリームが得られます。

サンプルコード1

through2-filter.js

var through2Filter = require('through2-filter');

var transform = through2Filter({
    objectMode: true
}, function (chunk, index) {
    console.log('index is ' + index + '.');
    return chunk < 50 && index % 2 == 0;
});

transform.write(10);
transform.write(21);
transform.write(32);
transform.write(43);
transform.write(54);
transform.write(65);
transform.write(76);
transform.write(87);
transform.write(98);
transform.end();

transform.on('data', function (r) {
    console.log(r);
});

使用パッケージ

  • through2-filter
    npm install through2-filterでインストールします。

実行結果

C:\work\node>node through2-filter.js
index is 0.
index is 1.
index is 2.
index is 3.
index is 4.
index is 5.
index is 6.
index is 7.
index is 8.
10
32

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js