ARRAY_SORTBY
機能
keys配列の順序に従ってvalues配列をソートします。
- 例えば、
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は数値、boolean、文字列、datetime、IPなどをサポートします。多次元配列もサポートされますが、すべての配列要素(どれだけ深くネストされていても)はサポートされる型である必要があります。keys:ARRAY<T>、valuesと同じ長さのキー配列。Tは数値、boolean、文字列、datetime、IPなどをサポートします。多次元配列もサポートされますが、すべての配列要素(どれだけ深くネストされていても)はサポートされる型である必要があります。lambda: ソートに使用されるkeys配列を生成するためにvaluesに適用されるlambda式。
戻り値
valuesと同じ型のARRAY<T>を返します。- 任意の行で
valuesとkeysの要素数が異なる場合はエラーがスローされます。
使用上の注意
- 安定性:
valuesはkeysの昇順で並び替えられます。等しいキー間の相対順序は未定義です。 - 高階呼び出しでは、
keysは最初にARRAY_MAPによって計算され、その後valuesがkeysによってソートされます。
例
-
基本:
keysの昇順でvaluesをソートします。ARRAY_SORTBY([10,20,30], [3,1,2])->[20,30,10]ARRAY_SORTBY(['a','b','c'], [2,2,1])->['c','a','b']
-
高階:
lambdaによってkeysを計算してからソートします。ARRAY_SORTBY(x -> x + 1, [3,1,2])->[1,2,3](keysは[4,2,3])ARRAY_SORTBY(x -> x*2 <= 2, [1,2,3])->[1,2,3](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]]