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

ホーム

 
4D v19.8
collection.orderByMethod( )

collection.orderByMethod( ) 


 

collection.orderByMethod ( methodName {; extraParam}{; extraParam2 ; ... ; extraParamN} ) -> 戻り値 
引数   説明
methodName  テキスト in 並べ替え順を指定するのに使用するメソッドの名前
extraParam  in メソッドの引数
戻り値  コレクション in 並べ替えされたコレクションのコピー(シャロウ・コピー)

説明   

collection.orderByMethod( ) メソッドはmethodName 引数で指定したメソッドを通して定義された順番で並べ替えされたコレクションの要素を全て格納する新しいコレクションを返します。

このメソッドはシャロウ・コピー、つまり両方のコレクション内のオブジェクトあるいはコレクションが同じ参照を共有するコピーを返します。元のコレクションが共有コレクションであった場合、返されたコレクションもまた共有コレクションになります。

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

methodName 引数には、二つの値を比較して、最初の値が二つ目の値より低い場合には$1.resulttrue を返す比較メソッドの名前を渡します。必要であればmethodName 引数に追加の引数を渡すこともできます。

  • methodName 引数は以下の引数を受け取ります:
    • $1 (オブジェクト):
      • $1.value (任意の型): 比較する最初の要素の値
      • $1.value2 (任意の型): 比較する二つ目の要素の値
    • $2...$N (任意の型): 他の引数
  • methodName 引数は以下の引数を設定します:
    • $1.result (ブール): $1.value < $1.value2 の場合にはtrue を、それ以外の場合にはfalse

文字列のコレクションを、アルファベット順ではなく、数値順に並べ替えをしたい場合を考えます:

 C_COLLECTION($c)
 $c:=New collection
 $c.push("33";"4";"1111";"222")
 $c2:=$c.orderBy() //$c2=["1111","222","33","4"] アルファベット順
 $c3:=$c.orderByMethod("NumAscending") // $c3=["4","33","222","1111"]

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

 $1.result:=Num($1.value)<Num($1.value2)

文字列のコレクションをそれらのlengthで並べ替えをしたい場合を考えます:

 C_COLLECTION($fruits)
 $fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
 $c2:=$fruits.orderByMethod("WordLength")
  //$c2=[Passion fruit,Blackberry,Orange,Banana,Apple,Grape,pear,fig]

WordLength のコードは以下のようになります:

 $1.result:=Length(String($1.value))>Length(String($1.value2))

コレクション内を文字コードまたはアルファベット順に基づいて並べ替えしたい場合を考えます:

 var $strings1;$strings2 : Collection
 $strings1:=New collection("Alpha";"Charlie";"alpha";"bravo";"Bravo";"charlie")
 
  // 文字コードを使用する
 $strings2:=$strings1.orderByMethod("sortCollection";sk char codes)
  // 結果: ["Alpha","Bravo","Charlie","alpha","bravo","charlie"]
 
  // アルファベット順を使用する
 $strings2:=$strings1.orderByMethod("sortCollection";sk strict)
  // 結果: ["alpha","Alpha","bravo","Bravo","charlie","Charlie"]

 

sortCollection メソッド:

 var$1Object
 var$2Integer // sort option
 
 $1.result:=(Compare strings($1.value;$1.value2;$2)<0)



参照 

collection.orderBy( )
collection.sort( )

 
プロパティ 

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

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)