ARRAY_SORTBY
功能
依据 key数组的顺序对 value数组进行排序。
- 例如
key数组是[3, 0, 2],value数组是[5, 7, 8],排序后的key数组是[0, 2, 3],对应的value数组是[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>,要排序的 value 数组,T只支持:数值,布尔,字符串,时间日期,IP 等类型。keys:ARRAY<T>,与arr等长的 key 数组,T只支持:数值,布尔,字符串,时间日期,IP 等类型。lambda:lambda表达式作用于values, 产生key 数组,利用产生的key 数组进行排序。
返回值
- 返回与
values同类型的ARRAY<T>。 - 当某行
arr与keys的元素个数不等时报错。
使用说明
- 排序稳定性:以
keys的升序重排values,keys中相等键的相对次序未定义。 - 高阶调用会先用
ARRAY_MAP计算keys,再按keys对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]
-
高阶用法:先执行
lambda表达式产生keys,然后再排序。ARRAY_SORTBY(x -> x + 1, [3,1,2])->[1,2,3](key为[4,2,3])ARRAY_SORTBY(x -> x*2 <= 2, [1,2,3])->[1,2,3](key为[true,false,false])
-
当
keys或者values为NULL时,返回values保持不变。array_sortby([10,20,30], NULL)->[10, 20, 30]array_sortby(NULL, [2,3])->NULL