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の値と文字列結合する
「テスト」タブを選択して、「メッセージ例」にnameとpriceプロパティを持つJSONオブジェクトを指定すると、「結果」欄でこの式の動作を確認できます。この文字列でソートを実行します。
結果は以下の通り、priceの値が同じ場合、nameの値でソートされました。
まとめ
まとめます。
- ソート条件にJSONata式を利用すると複雑な動作を実現できる
Sortノードシリーズはまだまだ続きます。
コメント
コメントを投稿