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

ホーム

 
4D v19.8
collection.orderBy( )

collection.orderBy( ) 


 

collection.orderBy ( {criteria} ) -> 戻り値 
引数   説明
criteria  テキスト, コレクション, 倍長整数 in テキスト: コレクションを並べ替えするプロパティパス
コレクション: 条件オブジェクトのコレクション
倍長整数: ck ascending あるいは ck descending (スカラー値)
戻り値  コレクション in 並べ替えられたコレクションのコピー(シャロウ・コピー)

説明   

collection.orderBy( ) メソッドは、criteria 引数で指定した順にコレクションの要素を並べ替えた新しいコレクションを返します。

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

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

criteria 引数を省略した場合、メソッドはコレクション内のスカラー値を昇順に並べ替えます(オブジェクトやコレクションなどの他の型は並べ替えされないまま返されます)。この自動並べ替え順は、criteria 引数にck ascending あるいは ck descending 定数を渡すことで変更できます(以下参照)。

また、コレクション要素をどのようにならべかえるかを定義するようにcriteria 引数を渡すこともできます。この引数に対しては3つのシンタックスがサポートされています:

  • criteriaテキスト型 である(フォーミュラ): "propertyPath1 {desc or asc}, propertyPath2 {desc or asc},..." (デフォルトの並び順: asc)
    この場合、criteria 引数はカンマで区切られた、1〜n のプロパティパスと並び順(オプション)でできたフォーミュラを格納します。プロパティを渡す順番が、コレクション要素の並べ替えの優先順位を決定します。
    デフォルトでは、プロパティは昇順に並べ替えられます。条件文字列内でプロパティの並べ替え順を設定することができます。プロパティパスの後に半角スペースで区切られたあとに昇順を指定するには"asc" を、降順を指定するには"desc" を渡します。
  • criteriaコレクション型である場合: この場合、コレクションの各要素は、以下のような構造を持つオブジェクトを格納します:
    {"propertyPath": 文字列
    "descending": ブール}

    デフォルトでは、プロパティは昇順に並べ替えられます("descending"がfalse)。
    criteria 引数のコレクションには、必要な数だけオブジェクトを追加することができます。
  • criteria倍超整数型である場合: この場合、Objects and collections テーマ内にある、以下の定数のいづれか一つを渡します:
    定数 コメント
    ck ascending 倍長整数 0 要素は昇順に並んでいる(デフォルト)
    ck descending 倍長整数 1 要素は降順に並んでいる

    このシンタックスはコレクション内のスカラー値のみを並べ替えします(オブジェクトやコレクションといった他の型の要素は並べ替えされないまま返されます)。

コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えがされます。型は以下の順番で返されます:

  1. null
  2. ブール
  3. 文字列
  4. 数値
  5. オブジェクト
  6. コレクション
  7. 日付

数値のコレクションを昇順と降順で並べ替える場合を考えます:

 C_COLLECTION($c;$c2;$3)
 $c:=New collection
 For($vCounter;1;10)
    $c.push(Random)
 End for
 $c2:=$c.orderBy(ck ascending)
 $c3:=$c.orderBy(ck descending)

オブジェクトのコレクションをプロパティ名のテキストフォーミュラに基づいて並べ替える場合を考えます:

 C_COLLECTION($c)
 $c:=New collection
 For($vCounter;1;10)
    $c.push(New object("id";$vCounter;"value";Random))
 End for
 $c2:=$c.orderBy("value desc")
 $c2:=$c.orderBy("value desc, id")
 $c2:=$c.orderBy("value desc, id asc")

オブジェクトのコレクションをプロパティパスで並べ替える場合を考えます:

 C_COLLECTION($c)
 $c:=New collection
 $c.push(New object("name";"Cleveland";"phones";New object("p1";"01";"p2";"02")))
 $c.push(New object("name";"Blountsville";"phones";New object("p1";"00";"p2";"03")))
 $c2:=$c.orderBy("phones.p1 asc")

オブジェクトのコレクションを、条件オブジェクトのコレクションを使用して並べ替える場合を考えます:

 C_COLLECTION($crit;$c)
 $crit:=New collection
 $c:=New collection
 For($vCounter;1;10)
    $c.push(New object("id";$vCounter;"value";Random))
 End for
 $crit.push(New object("propertyPath";"value";"descending";True))
 $crit.push(New object("propertyPath";"id";"descending";False))
 $c2:=$c.orderBy($crit)

プロパティパスで並べ替える場合を考えます:

 C_COLLECTION($crit;$c)
 $c:=New collection
 $c.push(New object("name";"Cleveland";"phones";New object("p1";"01";"p2";"02")))
 $c.push(New object("name";"Blountsville";"phones";New object("p1";"00";"p2";"03")))
 $crit:=New collection(New object("propertyPath";"phones.p2";"descending";True))
 $c2:=$c.orderBy($crit)



参照 

collection.orderByMethod( )
collection.sort( )

 
プロパティ 

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

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)