Sortノードを使う(その2)

ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回はSortノードシリーズの2回目です。

確認するサンプルは、前回に引き続き「読み込み > サンプル > flows > node-red > sequence > sort > 01 - Sort array payload」です。

シンプルなJSONata式でJSON配列をソートする

確認するのは5段目です。


 入力データを生成するTemplateノードでは、name(文字列)とprice(数値)をプロパティに持つJSON配列を指定しています。


SortノードではJSONata式でキー「price」で昇順ソートするよう指定してあります。


実行すると、以下のログが出力されます。msg.payload.priceの値で昇順ソートされていますね。特に説明の必要はないと思います。


複数のプロパティを条件に組み込んでソートする

最後は6段目です。先ほどより少し複雑なJSONata式を利用して複数プロパティの値を条件に組み込んでソートします。


入力データを生成しているTemplateノードでは、先程と同様JSON配列を指定していますが、今度は複数の要素で同じ値のpriceを持っています。このサンプルではnameの値も考慮に入れてソートを行っています。


Sortノードを開くと、キーに何やら長ったらしいJSONata式が設定されています。このままだと見づらいので、右側の「...」ボタンを選択します。


SONata式の全体像が確認できます。この内容を言葉で表現すると以下のようになります。
  • priceの値を4桁のゼロ埋めした文字列を生成して、nameの値と文字列結合する
テスト」タブを選択して、「メッセージ例」にnamepriceプロパティを持つJSONオブジェクトを指定すると、「結果」欄でこの式の動作を確認できます。この文字列でソートを実行します。


結果は以下の通り、priceの値が同じ場合、nameの値でソートされました。


まとめ

まとめます。
  • ソート条件にJSONata式を利用すると複雑な動作を実現できる
Sortノードシリーズはまだまだ続きます。


コメント

このブログの人気の投稿

Execノードを使う

Joinノードを使う(その4)

SendGridのX-SMTPAPIヘッダの使い方(Section Tags、Substitution Tags編)