ブロックを積みながら(77) Node-RED、sortノードで流れてくるmsgをソート

Joseph Halfmoon

今回はsortノードです。ベタで何の工夫もないソートの例題やってみました。数値配列をsplitしmsg列を sort ノードに送り込み、payloadの数値をキーにして昇順ソート、出力されたmsg列をjoinノードで配列(勿論ソート済の)に戻すというもの。言葉で書くとメンドウですが、ノードをつなげていくだけ、お楽。

※「ブロックを積みながら」投稿順 index はこちら

最初は sort するところまでのフローとその動作

冒頭のアイキャッチ画像のフローのうち、最初はソートするところまでのフローを動かして動作を観察してみました。

sortSampleFlow

左端のInjectノードからは、5個の要素を持つ数値配列が送り出されます。そして、splitノード(デフォルト設定のまま)で、数値配列は各要素毎にメッセージとして分割されます。なお split ノードは各メッセージのpartsプロパティにsplitしたときの順序の情報などを記載してくれます。

split後に5分割されたメッセージの様子が以下に。

afterSplit

 

さて上記のようなmsg列がsortノードになだれ込んできます。迎え撃つ?sortノードの設定が以下に。

sortSetting

ミソは「対称」が「メッセージ列」としてあることと、数値として比較にチェック入れてあるくらいです。

sortノードを通過した msg 列の様子が以下に。

afterSort

予定通り昇順にソートされて出てきます。ここにもpartsプロパティが記録されていますが、そこに記載されている順番は以前のものではなく、ソートされた順番に書き換わっています。

ソートされた結果をJoinして配列に戻すところ

上記のソートされた msg列を joinノードに入力して1個の配列に復元してみます。フローの追加部分は以下のようです。

joinFlow

joinノードはデフォルトのままでOK(partsプロパティが存在するため)でした。Join後の様子が以下に。

afterJoin

 

sort 済の数値配列に復元されとりますで。当たり前か。

ブロックを積みながら(76) Node-RED、rangeノードで数値範囲を変換 に戻る

ブロックを積みながら(78) Node-RED、batchノードでmsg列をひとからげ に戻る