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

ホーム

 
4D v19.8
collection.filter( )

collection.filter( ) 


 

collection.filter ( methodName {; param}{; param2 ; ... ; paramN} ) -> 戻り値 
引数   説明
methodName  テキスト in コレクションをフィルターするために呼び出すファンクション名
param  in methodNameに渡す引数
戻り値  コレクション in フィルターされた要素を格納する新しいコレクション(シャロウ・コピー)

説明   

collection.filter( ) ファンクションは、元のコレクションのうち、methodName 引数で指定したメソッドの結果がtrueになる全ての要素を格納した新しいコレクションを返します。このファンクションはシャロウ・コピー、つまり両方のコレクション内のオブジェクトあるいはコレクションが同じ参照を共有するコピーを返します。元のコレクションが共有コレクションであった場合、返されたコレクションもまた共有コレクションになります。

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

methodName 引数には、コレクションの要素を評価するために使用するメソッドの名前を渡し、必要であればparam 引数(任意)に必要な引数を渡します。methodName で指定したメソッドはどんなテストも実行することができ、引数を取っても取らなくても構いませんが、条件を満たすそれぞれの要素の$1.result 内にtrue を返す必要があり、その結果その要素は新しいコレクションに含まれます。

methodName 引数は以下の引数を受け取ることができます:

  • $1.value: フィルターする要素の値
  • $2: param 引数
  • $N...: param2...paramN

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

  • $1.result (ブール): 要素の値がフィルターの条件に合致し新コレクションに含まれなければならない場合にはtrueになります。
  • $1.stop (ブール、任意): メソッドのコールバックを止める場合にはtrueになります。返された値は最後に計算されたものです。

length が6未満であるコレクションのテキスト要素を取得したい場合を考えます:

 C_COLLECTION($col)
 C_COLLECTION($colNew)
 $col:=New collection("hello";"world";"red horse";66;"tim";"san jose";"miami")
 $colNew:=$col.filter("LengthLessThan";6)
  //$colNew=["hello","world","tim","miami"]

LengthLessThan メソッドのコードは以下のようになります:

 C_OBJECT($1)
 C_LONGINT($2)
 If(Value type($1.value)=Is text)
    $1.result:=(Length($1.value))<$2
 End if

値の型に応じて要素をフィルターしたい場合を考えます:

 C_COLLECTION($c)
 $c:=New collection(5;3;1;4;6;2)
 $c.push(New object("name";"Cleveland";"zc";35049))
 $c.push(New object("name";"Blountsville";"zc";35031))
 $c2:=$c.filter("TypeLookUp";Is real// $c2=[5,3,1,4,6,2]
 $c3:=$c.filter("TypeLookUp";Is object)
  // $c3=[{name:Cleveland,zc:35049},{name:Blountsville,zc:35031}]

TypeLookUp メソッドのコードは以下のようになります:

 C_OBJECT($1)
 C_LONGINT($2)
 If(OB Get type($1;"value")=$2)
    $1.result:=True
 End if

 
プロパティ 

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

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)