に最終更新
ARRAY_SORTBY
機能
values 配列を keys 配列の順序に従って並べ替えます。
- 例えば、
keysが[3, 0, 2]、valuesが[5, 7, 8]の場合、並べ替え後のkeysは[0, 2, 3]になり、対応するvaluesは[7, 8, 5]になります。
構文
ARRAY_SORTBY(values, keys)ARRAY_SORTBY(lambda, values)ARRAY_SORTBY(lambda, values)はARRAY_SORTBY(values, ARRAY_MAP(lambda, values))と同等です。
パラメータ
values:ARRAY<T>。並べ替える値の配列です。Tは数値型、真偽値型、文字列型、日時型、IP 型などをサポートします。多次元配列もサポートしますが、配列内のすべての要素は、ネストの深さにかかわらず、サポート対象の型である必要があります。keys:ARRAY<T>。valuesと同じ長さのキー配列です。Tは数値型、真偽値型、文字列型、日時型、IP 型などをサポートします。多次元配列もサポートしますが、配列内のすべての要素は、ネストの深さにかかわらず、サポート対象の型である必要があります。lambda:lambda式です。valuesに適用し、並べ替えに使用するkeys配列を生成します。
戻り値
ARRAY<T>を返します。型はvaluesと同じです。- いずれかの行で
valuesとkeysの要素数が異なる場合は、エラーが発生します。
使用上の注意
- 安定性:
valuesはkeysの昇順に従って並べ替えられます。同じキーを持つ値の相対的な順序は定義されていません。 - 高階関数形式では、
keysをまずARRAY_MAPで計算してから、valuesをkeysに従って並べ替えます。
使用例
-
基本例:
valuesをkeysの昇順に従って並べ替えます。ARRAY_SORTBY([10,20,30], [3,1,2])->[20,30,10]ARRAY_SORTBY(['a','b','c'], [2,2,1])->['c','a','b']
-
高階関数形式:
keysをlambdaで計算してから並べ替えます。ARRAY_SORTBY(x -> x + 1, [3,1,2])->[1,2,3](keysは[4,2,3])ARRAY_SORTBY(x -> x*2 <= 2, [1,2,3])->[2,3,1](keysは[true,false,false])
-
keysまたはvaluesがNULLの場合、valuesをそのまま返します。array_sortby([10,20,30], NULL)->[10, 20, 30]array_sortby(NULL, [2,3])->NULL
-
多次元配列の並べ替え: キーの並べ替え規則は、内側の要素の型に従います。
ARRAY_SORTBY(x -> x[1], [[1,2],[0,1]])->[[0, 1], [1, 2]]