ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
collection.reduce( )

collection.reduce( ) 


 

collection.reduce ( methodName {; initValue}{; param}{; param2 ; ... ; paramN} ) -> 戻り値 
引数   説明
methodName  テキスト in コレクションの要素を処理するために呼び出すファンクション名
initValue  テキスト, 数値, オブジェクト, コレクション, 日付, ブール in methodNameの最初の呼び出しに最初の引数として使用する値
param  in methodNameに渡す引数
戻り値  テキスト, 数値, オブジェクト, コレクション, 日付, ブール in アキュムレーター値の結果

説明   

collection.reduce( ) ファンクションは methodName 引数で指定した呼び出しファンクションをアキュムレーターとコレクション内の各要素に対して(左から右へ)適用し、単一の値へとまとめます。

注: このコマンドは元のコレクションは変更しません。

methodName 引数には、コレクションの要素を評価するのに使用するメソッドの名前を渡します。オプションとして使用する引数をparam 引数に渡すこともできます。methodName 引数はコレクションの各要素を受け取り必要なオペレーションを実行して結果を$1.accumulator に蓄積し、これは$1.value に返されます。

initValue 引数に値を渡すことでアキュムレーターを初期化することができます。省略された場合は、$1.accumulator Undefined から開始されます。

methodName は以下の引数を受け取ります:

  • $1.value: 処理する要素の値
  • $2: param
  • $N...: param2...paramN

methodName は以下の引数を設定します:

  • $1.accumulator: ファンクションで変更する値。initValue によって初期化。
  • $1.stop (ブール、任意): メソッドコールバックを止めるためにはtrue。返された値は最後に計算された値になります。

 C_COLLECTION($c)
 $c:=New collection(5;3;5;1;3;4;4;6;2;2)
 $r:=$c.reduce("Multiply";1) //86400を返す

このときMultiply メソッドは以下のようになっています:

 If(Value type($1.value)=Is real)
    $1.accumulator:=$1.accumulator*$1.value
 End if

以下の例題では、複数のコレクションの要素を単一のコレクションにまとめる場合を考えます:

 C_COLLECTION($c;$r)
 $c:=New collection
 $c.push(New collection(0;1))
 $c.push(New collection(2;3))
 $c.push(New collection(4;5))
 $c.push(New collection(6;7))
 $r:=$c.reduce("Flatten") //$r=[0,1,2,3,4,5,6,7]

このとき、Flatten メソッドは以下のようになっています:

 If($1.accumulator=Null)
    $1.accumulator:=New collection
 End if
 $1.accumulator.combine($1.value)

 
プロパティ 

プロダクト: 4D
テーマ: コレクション
番号: 705248

This command can be run in preemptive processes

 
ページの目次 
 
履歴 

初出: 4D v16 R6

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)