Последнее обновление
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поддерживаются числовые, логические и строковые типы, datetime, IP, UUID и т. д. Поддерживаются многомерные массивы, но все элементы массива (независимо от глубины вложенности) должны иметь поддерживаемые типы.keys:ARRAY<T>, массив ключей той же длины, что иvalues. ДляTподдерживаются числовые, логические и строковые типы, datetime, IP, UUID и т. д. Поддерживаются многомерные массивы, но все элементы массива (независимо от глубины вложенности) должны иметь поддерживаемые типы.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]]