2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初心者向け】配列の値をループ内で操作するには「アレイ(配列)のフィルター処理」が便利!

Last updated at Posted at 2022-02-18

ある条件でのループ内で、JSONで受け取った配列の値を1レコードずつ見ていくときに便利だったアクションについての覚書です。

検証のきっかけ

なんとなくこんな感じのフローを想定していました。
スライド1.PNG
ちなみに配列Nの中身はこんなイメージです。↓
配列N.png

要はとあるWeb APIから複数のレコードを取得してきた値を取り出すためのループの外で更に別のループを回したかったのですが、上記のフローには以下の問題点があります。

自動生成されるApply to Eachがループの回数をおかしくする…!

それは「配列Nから日付列を取り出そうとするときに自動生成されるApply to Eachアクションを考慮していない」という点です。

Apply to Eachアクションが自動生成された場合、「以前の手順から出力を選択」というプロパティでは自動で配列Nの名前がセットされます。
これは配列Nの要素の数だけループ処理を行う、という意味になります。

👇Apply to Eachアクションについての詳細👇

つまり、上記のフローだと意図していない子ループが発生してしまうせいで指定日数×配列Nの要素の数ループが発生してしまうのです。
スライド2.PNG

なので、何とかしてApply to Eachが意図していない箇所で自動生成されないように工夫をする必要があります。
スライド3.PNG

:bulb:「アレイ(配列)のフィルター処理」

ここで使用すると便利なアクションが「アレイ(配列)のフィルター処理」です。

アクション「アレイのフィルター処理」を追加すると下記のような設定画面が追加されるので、配列Nから取り出されるデータが1件になるように設定します。
アレイのフィルター処理.png

「アレイのフィルター処理」を使用した結果のフローは下図のようになります。
スライド4.PNG

不要なApply to eachの回避

ここで生成された値を更にfirst関数をかけるとフローの可読性が高まることもあると思います。

形式は配列でも取得する値が1つであることが明確である場合、わざわざ「Apply to each」アクションを使用すると- フローの保守性・可読性が低くなるので不便です。

:warning:その他の繰り返し処理作成時の注意点について

以下記事でループ処理のDo~Untilのループを抜ける条件について紹介しています。

2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?