Reduce

フローで必要な他の入力を含めることもできます。入力を定義した後で、ヘルパーフローの他の部分を構築し、最後をReturnカードにして([Control(制御)]カテゴリにあります)、新しい累算された値を返すようにします。この値は、次にヘルパーフローを呼び出すとき、リストの次のアイテムとともに渡されるか、リストにアイテムが残っていない場合はReduce関数の結果になります。 累算された値の型がオブジェクト以外の場合(例:数値)、同じ型の単一のreturnフィールドが必要です。フィールドの名前は何でもかまいません。 アキュムレーターがオブジェクトの場合、オブジェクトのキーごとに1つのフィールドを用意し、フィールド名はキー名と一致する必要があります。

入力フィールド

Reduceカードへの入力は次のように行います。

  • list:このリストに対して実行を行います。

  • flow:リストの各アイテムについて、このヘルパーフローが(上述のように)1回ずつ呼び出されます。

  • with the following values (動的に生成)

    • item :(ヘルパーフローを作成するときに選択した任意の名前)リストで、現在のアイテムを保持しているフィールドをクリックし、[Item(アイテム)]を選択します。場合によっては、オブジェクト内で特定のパスを選択することもできます。

    • memo :このフィールドの型を、最終結果として希望する型に設定します(例:Reductを使用して合計を取得する場合、型は数値にします)。開始値を指定します(例:合計を計算する場合は0から開始します)。

    • 選択したヘルパーフローについて、ヘルパーフローのイベントカードにオプションの追加フィールドが存在すれば、それらも入力フィールドとして表示されます。

出力フィールド

  • item:各アイテムに対してヘルパーフローが実行された結果として得られる値。itemの型は、必ず入力のmemoの型と同じに設定してください。

数値のリストがあり、Reduceを使用して、その中から最も大きな数値を特定することを考えます。 最初にヘルパーフローを作成する必要があります。フローの最初にHelper Flow イベントを置き、"current item"(数値)と"memo"(数値)の2つのフィールドを追加します。

次のカードは、それらの2つの数値のうち大きい方を出力するControl - AssignIf 関数です。

最後のカードはControl - Return関数で、AssignIfカードからの出力を新しいmemoとして返します。 フローを"inner - max"として保存し、オンにします。

次に、数値のリストを受け付けるList Reduceカードを作成します。[Choose Flow(フローの選択)]をクリックし、今作成した"inner-max"フローを選択します。"current item"入力をクリックし、ドロップダウンの[Item(アイテム)]を選択します。"memo"入力をクリックし、0を入力します(開始値)。

Reduceカードは次のようになります。

ヘルパーフローは次のようになります。

この例で、Reduceカードがどのように動作するかを説明します。

リスト値として[1, 7, 4, 19, 2]を渡したと考えます。"inner-max"ヘルパーフローは次に示すように、リストのアイテムごとに1回、合計5回呼び出されます。

  • 1回目はcurrent itemが1、memoが0なので、ヘルパーフローは大きい方の数値である1を返します。

  • 2回目はcurrent itemが7、memoが1(前の手順の戻り値)です。ヘルパーフローはこれらを比較し、7を返します。

  • 3回目はcurrent itemが4、memoが7です。子フローは7を返します。

  • 4回目はcurrent itemが19、memoが7です。子フローは19を返します。

  • 最後の回はcurrent itemが2、memoが19です。 ヘルパーフローは19を返し、リストにはアイテムが残っていないので、これが最終的な出力になります。

上述の例では単純な計算を行っていますが、ヘルパーフローは必要なだけ複雑にできます。

If/Else条件、複雑な計算、アプリケーションのアクションも含めることができます。

また、数値と計算に限る必要もありません。テキスト(例:Concatenateを使用)やリスト(例:List Add to Endを使用)など、異なる型のものも構築できます。

Reduceカードのmemoおよびitemと、ヘルパーフローのイベントカードのmemoフィールドとの型が一致することだけを確認してください。また、Returnカードでヘルパーフローから返される値も、型がオブジェクトでない限りはこれらと一致している必要があります。型がオブジェクトの場合は、オブジェクトの各キーと対応するフィールドがReturnカードに存在し、キーと同じ名前に設定されている必要があります。

関連項目

リストについて

Workflowsの関数

Okta Workflowsの要素について