跳到主要内容

FQL 函数参考

下面记录了所有 流查询语言(FQL) 函数。

一般功能

断言

如果条件为假,则在消息中抛出错误。

句法$assert($cond: bool, $msg: string) => 错误
例子$assert(user.age <18, "error: user cannot vote!")

平均的

返回数值数组的平均值。

句法$average($array: array<num>) =< 数
例子$平均([1,2,3,4,5]) -> 3

布尔值

将参数转换为其有效的布尔值。

句法$boolean($arg: any) => 布尔值
例子
$boolean(0) -> false$布尔值(10) -> 真$boolean("") -> 错误$boolean("abc") -> 真

包含

如果字符串包含模式,则返回 true。

句法$contains($str: string, $pattern: string | regex) => 布尔
例子
$contains("hello, world", "lo") -> 真$contains("hello world", "ab") -> false

解码网址

从 URL 解码字符串。

句法$decodeUrl($val: 字符串) => 字符串
例子$decodeUrl("https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B") -> "https://mozilla.org/?x =وеллы"

decodeUrl 组件

从先前使用创建的组件解码字符串encodeUrlComponent

句法$decodeUrlComponent($val: 字符串) => 字符串
例子$decodeUrlComponent("%3Fx%3Dtest") -> "?x=test"

每个

将函数应用于对象的每个键/值对。

句法$each($obj: 对象, func: ($val, $key) : 任何)
例子
“地址”: {“街道”:“赫斯利公园”,“城市”:“温彻斯特”,“邮政编码”:“SO21 2JN”}$each(地址, fn($v, $k) {$k & ": " & $v}) ->[“街道:赫斯利公园”,“城市:温彻斯特”,“邮政编码:SO21 2JN”]

编码网址

将值编码为 URL。

句法$encodeUrl($val: 字符串) => 字符串
例子$encodeUrl("https://mozilla.org/?x=Èллы") -> "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1 %8B"

encodeUrl 组件

将值编码到 URL 的组件中。

句法$encodeUrlComponent($val: 字符串) => 字符串
例子$encodeUrlComponent("?x=test") -> "%3Fx%3Dtest"

评估

计算表达式。

句法$eval($val:string) => 任意
例子$eval("[1,$string(2),3]") -> [1,"2",3]

存在

如果值不为 null 或未定义,则返回 true。

句法$exists($val: any) => 布尔值
例子
$exists("hello") -> 真$exists([1,2,3]) -> 真$exists({"a" : 1, "b": 2}) -> 真$exists(null) -> false$exists(blah) -> false

筛选

返回满足函数中定义的谓词的元素数组。

句法$filter($arr: array, $func: ($e, $index?: number?, $ar: array )=> boolean) => array
例子$filter([1,2,3,4,5], fn($e){ $e>3}) -> [4, 5]

加入

使用可选的分隔符字符串将数组的元素连接成一个字符串。

句法$join($arr: 数组, $分隔符?: 字符串) => 字符串
例子
$join(["hello", "world"]) -> "helloworld"$join(["hello", "world"], "-") → "hello-world"$join([1,2,3], "..") -> "1..2..3"

JSON

将对象转换为 JSON 字符串。

句法$json($val:any) => 字符串
例子$json({"a": 1, "b" : "你好"}) -> "{"a":1,"b":"你好"}"

json 解析

将 JSON 字符串解析为对象。

句法$jsonParse($val:string) => 对象
例子$jsonParse('{"one": 1, "two": [3, "four"]}') -> {"one": 1,"two": [ 3,"four"]}

钥匙

返回对象中键的数组。

句法$keys($obj: object) => 数组
例子
“产品”: [{“产品名称”:“圆顶硬礼帽”,“产品ID”:858383,“SKU”:“0406654608”,“描述”: {“颜色”:“紫色”,“宽度”:300,“高度”:200,“深度”:210,“重量”:0.75},“价格”:34.45,“数量”:2}]$keys(Product) -> ["Product Name","ProductID","SKU","Description","Price","Quantity"]

长度

返回字符串的长度。

句法$length($str: string) => 数字
例子
$length("abc") -> 3$长度("") -> 0

抬头

返回对象中键的值。

句法$lookup($obj: object, $key: string) => 任意
例子($o := { "name" : "John", "email": "john@gmail.com"}; $lookup($o, "name")) -> "John"

小写

返回字符串的小写版本。

句法$lowercase($str: 字符串) => 字符串
例子$lowercase("Hello World") -> "你好世界"

地图

使用函数映射数组的每个元素,并返回包含所有映射元素的新数组。

句法$map($arr: array, $func: ($e, $index?: number?, $ar: array) : 数组
例子$map([1,2,3,4,5], fn($e){ $e *2}) -> [2,4,6,8,10]

最大限度

返回数值数组的最大值。

句法$max($array) => 数字
例子$max([9,2,17,3]) -> 17

匹配

返回匹配模式的字符串数组。

句法$match($str: string, $pattern: string | regex) => 数组
例子$match("ababbabbbcc",/a(b+)/) -> ["ab", "abb", "abbb"]

合并

返回一个新对象,该对象具有合并到其中的对象数组中每个对象的属性。

句法$merge($arr: 数组
例子$merge([{"a":1},{"b":2}]) -> {"a": 1,"b": 2}

不是

如果值为 false 则返回 true,否则返回 false。

句法$not($x: any) => 布尔值
例子
$不(真)->假$不(假)->真$not(null) -> 真$不(0) -> 真$not(100) -> 错误$not("") -> 真$not("hello") -> 错误

软垫

返回用 $pad (如果提供)填充到一定长度的字符串的副本。

句法$pad($str: string, $length: number, $pad?: string) => 字符串
例子
$pad("示例", 5) -> "示例"$pad("示例", 5, "-") -> "示例--"

分割

将数组划分为大小为 $n 的数组。

句法$partition($array:any, $n: numbers) => 数组
例子
$partition([1,2,3,4,5,6,7,8,9,10], 2) -> [[1,2], [3,4], [5,6], [7 ,8], [9,10]]$partition([1,2,3,4,5,6,7,8,9,10], 3) -> [[1,2,3], [4,5,6], [7,8 ,9], [10]]

代替

返回一个字符串,所有出现的模式都被替换字符串替换。

句法$replace($str: string, $pattern: string | regex, $replacement: string) => 字符串
例子
$replace("Hello World", "World", "Everyone") -> "Hello Everyone"$replace("the cat sat on the mat", "at", "it") -> "the cit sit on the mit"

减少

使用函数将数组缩减为某个值。

句法$reduce(数组, 函数 [, 初始化])
例子$reduce([1,2,3,4], fn($prev, $cur) { $prev*$cur}) ) -> 24

分裂

使用模式将字符串拆分为字符串数组。

句法$split($str: string, $pattern: string | regex, $flags?: string) => 数组
例子
$split("那么多单词", " ") -> ["那么", "很多", "单词"]$split("这么多单词", " ", 2) -> [ "so", "many" ]$split("太多了,标点符号。难读",/[ ,.;]+/) -> ["太多", "太多", "标点符号", "难", "to", "读" ]

传播

返回具有单个键/值对的对象数组,其中键是属性的名称,值是属性的值。

句法$spread($val: any) => 数组<对象>
例子$spread({ "a": 1, "b": 2}) -> [ { "a" : 1}, {"b": 2}]

细绳

返回输入值的字符串表示;如果 $prettify 为 true,则输出字符串被格式化以提高可读性。

句法$string($value: any, $prettify?true | false) => 字符串
例子
$string({"a": 1, "b": 2}) -> "{"a":1, "b" : 2}"$字符串(5) -> "5"$string([1,2,3]) -> ["1", "2", "3"]

子串

返回从 $start 开始且长度为 $length(如果提供)的字符串的子字符串。

句法$substring($str: string, $start: number, $length?: number) => 字符串
例子
$substring("hello world", 0, 5) -> "你好"$substring("你好世界", -5, 5) -> "世界"

子串之后

返回第一次出现分隔符后的字符串的子字符串。

句法$substringAfter($str: 字符串, $separator: 字符串) => 字符串
例子$substringAfter("abc@gmail.com", "@") -> "gmail.com"

子串之前

返回第一次出现分隔符之前的字符串的子字符串。

句法$substringBefore($str: 字符串, $separator: 字符串) => 字符串
例子$substringBefore( "john@gmail.com", "@") -> "john"

返回数值数组的值的总和。

句法$sum($array) => 数字
例子$sum([1,2,3,4]) -> 10

修剪

返回删除了前导和尾随空格的字符串副本。

句法$trim($str: 字符串) => 字符串
例子$trim("你好\n 世界") -> "你好世界"

类型

返回值的类型。

句法$type($val: any) => 字符串
例子
$type("你好") -> "字符串"$type(1) -> “数字”$type({}) -> “对象”$type([]) -> “数组”$type(null) -> "null"

大写

返回字符串的大写版本

句法$uppercase($str: 字符串) => 字符串
例子$uppercase("你好") -> "你好"

uuid

以字符串形式返回唯一 ID(UUID 版本 4)。

句法$uuid => 字符串
例子$uuid -> "503c5a9f-b8fb-402a-b0d7-fae17490bdf6"

数组函数

附加

返回一个新数组,其值附加(添加)到数组。

句法$append($arr: array, $val: any) => 数组
例子
$append([1,2,3], [5,6]) -> [1,2,3,4,5,6]$append([1,2,3], 5) -> [1,2,3,5]

数数

返回数组中元素的数量。

句法$count($array) => 数字
例子
$count([1,2,3,4,5]) -> 5$计数([]) -> 0

清楚的

返回一个新数组,其中包含 $arr 的不同元素,并消除了重复项。

句法$distinct($arr: 数组) => 数组
例子$distinct(["a", "b", "b", "c"]) -> ["a", "b", "c"]

撤销

返回一个新数组,其中数组元素的顺序相反。

句法$reverse($arr: 数组) => 数组
例子$reverse([1,2,3,4,5]) -> [5,4,3,2,1]

洗牌

返回一个新数组,其中包含随机排列的数组元素。

句法$shuffle($arr: 数组) => 数组
例子$shuffle([1,2,3,4]) -> [3,1,4,2]

种类

使用 $swapFn 函数对数组元素进行排序的高阶函数。比较器函数有两个参数。如果它返回 true,元素将被交换。

句法$sort($arr: array, $swapFn: ($l, $r)) => 布尔值
例子
$sort([13,2,8,6,15], fn($l, $r) { $l > $r }) -> [2,6,8,13,15]$sort([13,2,8,6,15], fn($l, $r) { $l < $r }) -> [15,13,8,6,2]

压缩

获取两个或多个数组并卷积(压缩)一组数组中的每个值。

句法$zip($ar1:Array, $ar2:Array, $ar3;Array, ...) => 数组
例子$zip([1,2,3],[4,5,6]) -> [[1,4],[2,5],[3,6]]

数值函数

腹肌

返回数字的绝对值。

句法$abs(n:数字) : 数字
例子$abs(-1) -> 1

阿科斯

返回多个弧度的反余弦值。结果介于 0 和 pi 之间。该数字必须介于 -1 和 1 之间。

句法$acos($num: 数字) => 数字
例子$acos(1) -> 0

阿科什

以弧度为单位返回数字的反双曲余弦值。该数字必须是 1 到 inf 之间的数字。结果介于 0 和 inf 之间。

句法$acosh($num: 数字) => 数字
例子$acosh(1) -> 0

阿信

返回弧度数的反正弦值。结果介于 -pi/2 和 pi/2 之间。该数字必须介于 -1 和 1 之间。

句法$asin($num: 数字) => 数字
例子$asin(1) -> 1.5707963267948966

阿信

以弧度为单位返回数字的反双曲正弦值。结果介于 -inf 和 inf 之间。

句法$asinh($num: 数字) => 数字
例子$asinh(1) -> 1.5707963267948966

晒黑

返回多个弧度的反正切值。结果介于 -pi/2 和 pi/2 之间。

句法$atan($num: 数字) => 数字
例子$atan(1) -> 0.7853981633974483

阿坦赫

以弧度为单位返回数字的反双曲正切值。该数字必须介于 -1 和 1 之间。结果介于 -inf 和 inf 之间。

句法$atanh($num: 数字) => 数字
例子$atanh(1) -> 信息

阿坦 2

以弧度为单位返回 atan(y / x)。结果介于 -pi 和 pi 之间。平面中从原点到点 (x, y) 的矢量与正 X 轴成这个角度。它知道两个输入的符号,因此它可以计算角度的正确象限。例如,atan(1) 和 atan2(1, 1) 都是 pi/4,但 atan2(-1, -1) 是 -3*pi/4。

句法$atan2($x: 数字, $y: 数字) => 数字
例子$atan2(-1, -1) -> -2.356194490192345

cbrt

返回数字的立方根。

句法$cbrt($num: 数字) => 数字
例子$cbrt(27) -> 3

天花板

返回大于或等于数字的最小整数。

句法$ceil($num: 数字) => 数字
例子$ceil(3.4) -> 4

持续的

返回具有给定名称的常量值。例如:e、ln 2、log2 e、log10 e、pi 或 π。

句法$常量($name: 字符串) => 数字
例子$常数('e') -> 2.718281828459045

余弦

返回多个弧度的余弦值。

句法$cos($num: 数字) => 数字
例子$cos(1) -> 0.5403023058681398

cosh

返回多个弧度的双曲余弦值。

句法$cosh($num: 数字) => 数字
例子$cosh(1) -> 1.5430806348152437

exp

返回 e 的整数次方,其中 e = 2.718281... 是自然对数的底。

句法$exp($num: 数字) => 数字
例子$exp(16) -> 8886110.520507872

地面

返回小于或等于数字的最大整数。

句法$floor($num: 数字) => 数字
例子$地板(3.4)-> 3

格式基础

在可选的基数系统中将数字转换为字符串,如果未提供基数,则使用基数 10 来创建字符串。

句法$formatBase($num: 数字, $base?: 数字) => 字符串
例子$formatBase(100, 2) -> "1100100"

是有限的

如果输入的值不是无穷大,则返回 true,否则返回 false。

句法$isFinite( $num: 数字 ) => 数字
例子
$isFinite(1) -> 真$isFinite(inf) -> 错误

日志

返回数字的自然对数(以 e 为底)。

句法$log($num: 数字) => 数字
例子$日志(16)-> 2.772588722239781

log10

返回数字的以 10 为底的对数。

句法$log10($num: 数字) => 数字
例子$log10(16) -> 1.2041199826559248

log2

返回数字的以 2 为底的对数。

句法$log2($num: 数字) => 数字
例子$log2(16) -> 4

数字

将值转换为数字。

句法$number($x: string | number | bool) => 数字
例子
$number("-0.05") -> -0.05$数字(假)-> 0$数字(真)-> 1

力量

返回 $num 的 $exp 次方。

句法$power($num: 数字, $exp: 数字) => 数字
例子
$power(2, 3) -> 8$power(3,4) -> 81

圆形的

将数字四舍五入为可选的精度小数位数。如果精度为负,则其值指定要舍入到小数点左侧的哪一列。

句法$round($num: 数字, $precision?: 数字) => 数字
例子
$round(123.456) -> 123$round(123.456, 2) -> 123.46$round(123.456, -1) -> 120$round(123.456, -2) -> 100$round(125, -1) -> 120$round(125.456,-1) -> 130

返回弧度数的正弦值。

句法$sin($num: 数字) => 数字
例子$sin(1) -> 0.8414709848078965

返回多个弧度的双曲正弦值。

句法$sinh($num: 数字) => 数字
例子$辛赫(1) -> 1.1752011936438014

开方

返回数字的平方根。

句法$sqrt($num: 数字) => 数字
例子$sqrt(16) -> 4

棕褐色

返回多个弧度的正切值。

句法$tan($num: 数字) => 数字
例子$tan(1) -> 1.5574077246549023

tanh

返回多个弧度的双曲正切值。

句法$tanh($num: 数字) => 数字
例子$tanh(1) -> 0.7615941559557649

日期和时间函数

日期之后

如果 $timestamp1 在 $timestamp2 之后返回 true,否则返回 false。

句法$afterDate($timestamp1: string |number, $timestamp2: string |number) => 布尔值
例子$afterDate("2023-02-09", "2023-02-08") -> true $afterDate("2023-02-08", "2023-02-08") -> false

日期前

如果 $timestamp1 在 $timestamp2 之前返回 true,否则返回 false。

句法$beforeDate($timestamp1: string |number, $timestamp2: string |number) => 布尔值
例子
$beforeDate("2023-02-07", "2023-02-08") -> 真$beforeDate("2023-02-08", "2023-02-08") -> 错误

日期等于

如果两个时间戳相同则返回 true,否则返回 false。

句法$dateEquals($timestamp1: string |number, $timestamp2: string |number) => 布尔值
例子
$dateEquals("2023-02-08", "2023-02-08") -> 真$dateEquals("2023-02-08", "2023-02-07") -> 错误

加日期

添加 $units 类型的持续时间,它可以是 ["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] 之一到 $timestamp 并返回新的时间戳。如果 $duration 小于零,那么它将从 $timestamp 中减去。

句法$datePlus($timestamp1: string |number, $duration: number, $units, ) => 数字
例子
$datePlus("2023-02-07", 2, "天数") -> 1675900800000$datePlus("2023-02-07", 2, "月") -> 1680825600000

从时间戳中提取日期并将其作为数字返回。

句法$day($timestamp: string |number) => 数字
例子$day("2023-02-08") -> 8

一周中的天

以数字形式返回星期几 [1=星期一,... 6=星期六,7= 星期日]

句法$dayOfTheWeek($timestamp: string |number) => 数字
例子
$dayOftheWeek("2023-02-08") -> 3$dayOftheWeek("2023-02-07") -> 2

差异日期

返回指定单位中的两个时间戳之间的差异,可以是 ["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] 之一。

句法$diffDate($timestamp1: string |number, $timestamp2: string |number, $units : string, ) => 数字
例子
$diffDate("2023-02-08", "2023-01-22", "天数") -> 17$diffDate("2023-02-08", "2023-01-22","小时") -> 408

来自米利斯

将纪元以来的毫秒数转换为字符串。$picture 是可选的,如果没有提供,它将默认为 ISO 格式。图片规格符合 Unicode 日期格式标准。

句法$fromMillis($val:number, $picture?: string) => 字符串
例子
$fromMillis(1521801216617, "dd/M/yyyy") -> "23/3/2018"$fromMillis(1522616700000, "E EEEE") -> "7 个星期日"

有相同的日期

如果两个时间戳的 $units 中指定的组件相同,则返回 true,否则返回 false。$units 是一个数组,包含来自 ["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] 的一个或多个字符串。

句法$hasSameDate($timestamp1: string |number, $timestamp2: string |number, units?: Array) => 布尔值
例子
$hasSameDate("23-02-08", "2019-02-08", ["月", "日"]) -> 真$hasSameDate("2023-02-01", "2023-02-08", ["月", "年"]) -> 真$hasSameDate("23-02-01", "2023-02-08", ["月", "年"]) -> 真$hasSameDate("2023-02-01T07:15:54.730Z", "2023-02-01T14:00:22.340Z", ["year","month", "day"]) -> true

小时

从时间戳中提取本地小时组件并将其作为数字返回。

句法$hours($timestamp: string |number) => 数字
例子$hours("2023-02-08T07:56:14.747+00:00") -> 7

毫秒

从时间戳中提取毫秒并将其作为数字返回。

句法$milliSeconds($timestamp: string |number) => 数字
例子$milliSeconds("2023-02-08T07:56:14.747+00:00") -> 747

分钟

从时间戳中提取分钟部分并将其作为数字返回。

句法$minutes($timestamp: string |number) => 数字
例子$分钟("2023-02-08T07:56:14.747+00:00") -> 56

从时间戳中提取月份部分。

句法$month($timestamp: string |number) => 数字
例子$月(“2023-02-08”)-> 2

从时间戳中提取本地秒组件并将其作为数字返回。

句法$seconds($timestamp: string |number) => 数字
例子$seconds("2023-02-08T07:56:14.747+00:00") -> 14

至米利斯

将字符串转换为自纪元以来的毫秒数。$picture 是可选的,如果没有提供,它将默认为 ISO 格式。图片规格符合 Unicode 日期格式标准。

句法$toMillis($val:string, $picture?: string) => 数字
例子
$toMillis("1970-01-01T00:00:00.001Z") -> 1$toMillis("2018-03-27", "yyyy-MM-dd") -> 1522108800000$toMillis("2017 年 8 月 21 日", "dd MMMM yyyy") -> 1503273600000

从时间戳中提取年份部分并将其作为数字返回。

句法$year($timestamp: string |number) => 数字
例子$year("2023-02-08T07:56:14.747+00:00") -> 2023