LoginSignup
11
11

More than 5 years have passed since last update.

Node-RED Version 0.14から追加されたSplit / Joinノードの使い方

Last updated at Posted at 2016-12-11

Node-RED Version 0.14から新しくSplitノードとJoinノードが追加されました。

これは配列メッセージの各要素を分解して1つのメッセージとして流すSplitノードと、分解されたメッセージを配列/文字列/オブジェクトなど多様な型として結合するJoinノードのことで、これらを使いこなすことでループするフローを作成する必要がほとんどなくなります。

Splitノード

配列をSplit

Splitノードは何も設定せず配列データを渡すだけで動作が解ります。

image

文字列をSplit

配列だけではなく文字列とオブジェクトも分解できるようです。以下は;で分けてみました(デフォルトの例は改行コード)

image

1:2:3:4:5という文字列を渡すと先ほどと同様、各要素のメッセージに分割されました。

image

オブジェクトをSplit

続いてオブジェクトです。Injectノードに以下のようなJSONを渡します。

image

これだけでメッセージが分割されます。簡単ですね。

image

Joinノード

配列をSplitして配列でJoin

まず、配列をSplitして配列としてJoinします。これは何もしないでJoinノードを置くだけです。

image

配列をSplitして文字列でJoin

次に配列 -> 文字列です。Joinノードの設定を開いて以下のように設定します。

image

これで配列 -> 文字列になりました。

image

配列をSplitしてオブジェクトでJoin

次に配列 -> オブジェクトです。オブジェクトにするためにはkeyが必要です。それはSplitされた後にmsg.parts.keyなど(任意で他のプロパティでも良い)で指定します。

以下のようにSplitノードの後にChangeノードを配置します。

image

Changeノードは以下のように設定します。

image

ただし、このままではすべての値のkeyvalになってしまうので以下のようにChangeノードの後にTemplateノードを置きます。

image

Templateノードは以下のように設定します。msg.parts.keyは先ほどChangeノードで設定したvalがSetされていて、msg.parts.indexにはSplitされたタイミングで配列の要素番号がSetされています。これを連結するわけですね。

image

最後にJoinノードを以下のように設定します(要素数は入力時と同様に5つにする場合でも明示的に5と入力する必要があります)

image

以下のような結果になります。

image

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11