array_sortby
配列内の要素を、別の配列またはラムダ式から変換された配列の昇順に並べ替えます。詳細は Lambda expression を参照してください。この関数は v2.5 からサポートされています。
2 つの配列の要素は、キーと値のペアのような関係にあります。例えば、b = [7,5,6] は a = [3,1,4] のソートキーです。キーと値のペアの関係に基づいて、2 つの配列の要素は以下のように一対一で対応します。
| Array | Element 1 | Element 2 | Element 3 |
|---|---|---|---|
| a | 3 | 1 | 4 |
| b | 7 | 5 | 6 |
配列 b が昇順にソートされると、[5,6,7] になります。それに応じて配列 a は [1,4,3] になります。
| Array | Element 1 | Element 2 | Element 3 |
|---|---|---|---|
| a | 1 | 4 | 3 |
| b | 5 | 6 | 7 |
ソートに関与する配列の数が 2 つを超える場合、この関数の目的は、複数の配列列(array1, array2, array3 など)の値に基づいて array0 をソートすることです。ソートルールは以下の通りです:
まず、array1 の対応する要素を比較します。 同じ場合は、array2 の対応する要素を比較します。 このようにして、最後の配列列まで続けます。
注意:
ソートに参加する配列の要素は、ソート可能な型または JSON 型でなければなりません。 ソートに参加する配列のサイズは、元の配列と一致している必要があります(NULL 値を除く)。
例の説明
以下の 4 つの配列が与えられたとします:
array0 = [1, 2, 3, 4, 5]
array1 = [6, 5, 5, 5, 4]
array2 = ["d", "b", "a", "b", "4"]
array3 = ["2023-01-01", "2023-01-04", "2023-01-03", "2023-01-05", "2023-01-02"]
ソート手順:
- array1 を比較します:
- array1 のソートされたインデックス順は [4, 2, 3, 1, 0] です。なぜなら 4 < 5 < 5 < 5 < 6 だからです。
- array1 の要素 [5, 5, 5] に対して、array2 を比較します:
- array2 の [a, b, b] のソート順は [2, 3, 4] です。なぜなら a < b = b だからです。
- array1 と array2 の要素 [b, b] に対して、array3 を比較します:
- array3 の [2023-01-04, 2023-01-05] のソート順は [2, 4] です。なぜなら 2023-01-04 < 2023-01-05 だからです。
最終的な array0 のソート結果:
array0 = [5, 3, 2, 4, 1]
構文
array_sortby(array0, array1)
array_sortby(<lambda function>, array0 [, array1...])
array_sortby(array0, array1, [array2, array3...])
-
array_sortby(array0, array1)array1の昇順に従ってarray0をソートします。 -
array_sortby(<lambda function>, array0 [, array1...])ラムダ関数から返された配列に従って
array0をソートします。 -
array_sortby(array0, array1, [array2, array3...])複数の配列列(array1, array2, array3 など)の値に基づいて array0 を昇順にソートします。ソートルールは、まず array1 の対応する要素を比較し、同じ場合は array2 の対応する要素を比較し、このようにして最後の配列列まで続けます。
パラメータ
array0: ソートしたい配列。配列、配列表現、またはnullでなければなりません。配列内の要素はソート可能でなければなりません。array1:array0をソートするために使用されるソート配列。配列、配列表現、またはnullでなければなりません。lambda function: ソート配列を生成するために使用されるラムダ式。array1, [array2, array3...]:array0をソートするために使用されるソート配列。配列、配列表現、またはnullでなければなりません。