本記事は、FQL function reference の日本語訳です(2024年5月14日更新)。
本記事では、すべての Flows Query Language (FQL) 関数について説明します。
一般関数
assert
条件が false の場合、メッセージとともにエラーをスローします。
構文 | $assert($cond: bool, $msg: string) => error |
---|---|
例 | $assert(user.age <18, "error: user cannot vote!") |
average
数値配列の平均値を返します。
構文 | $average($array: array<num>) => number |
---|---|
例 | $average([1,2,3,4,5]) -> 3 |
base64decode
Base64 エンコードされた文字列をデコードします。
構文 | $base64decode($str: string) => string |
---|---|
例 | $base64decode("c29tZSBkYXRhIGhlcmU=") -> "some data here" |
base64encode
文字列を Base64 エンコードします。
構文 | $base64encode($str: string) => string |
---|---|
例 | $base64encode("some data here") -> "c29tZSBkYXRhIGhlcmU=" |
boolean
引数を有効な真偽値にキャストします。
構文 | $boolean($arg: any) => bool |
---|---|
例 |
$boolean(0) -> false $boolean(10) -> true $boolean("") -> false $boolean("abc") -> true
|
clone
オブジェクトを複製します。
構文 | $clone($obj: object) => object |
---|---|
例 | $clone({"a":1},{"b":2}) -> {"a":1},{"b":2} |
contains
文字列がパターンを含む場合に true を返します。
構文 | $contains($str: string, $pattern: string | regex) => bool |
---|---|
例 |
$contains("hello, world", "lo") -> true $contains("hello world", "ab") -> false
|
decodeUrl
URL から文字列をデコードします。
構文 | $decodeUrl($val: string) => string |
---|---|
例 | $decodeUrl("https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B") -> "https://mozilla.org/?x=шеллы" |
decodeUrlComponent
以前に encodeUrlComponent
で作成されたコンポーネントから文字列をデコードします。
構文 | $decodeUrlComponent($val: string) => string |
---|---|
例 | $decodeUrlComponent("%3Fx%3Dtest") -> "?x=test" |
each
オブジェクトの各キーと値のペアに関数を適用します。
構文 | $each($obj: object, func: ($val, $key) : any) |
---|---|
例 |
"Address": { "Street": "Hursley Park", "City": "Winchester", "Postcode": "SO21 2JN" } $each(Address, fn($v, $k) {$k & ": " & $v}) -> [ "Street: Hursley Park", "City: Winchester", "Postcode: SO21 2JN" ]
|
encodeUrl
値を URL にエンコードします。
構文 | $encodeUrl($val: string) => string |
---|---|
例 | $encodeUrl("https://mozilla.org/?x=шеллы") -> "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B" |
encodeUrlComponent
値を URL のコンポーネントにエンコードします。
構文 | $encodeUrlComponent($val: string) => string |
---|---|
例 | $encodeUrlComponent("?x=test") -> "%3Fx%3Dtest" |
eval
式を評価します。
構文 | $eval($val:string) => any |
---|---|
例 | $eval("[1,$string(2),3]") -> [1,"2",3] |
exists
値が null または undefined でない場合に true を返します。
構文 | $exists($val: any) => bool |
---|---|
例 |
$exists("hello") -> true $exists([1,2,3]) -> true $exists({"a" : 1, "b": 2}) -> true $exists(null) -> false $exists(blah) -> false
|
filter
関数で定義された条件を満たす要素の配列を返します。
構文 | $filter($arr: array, $func: ($e, $index?: number, $ar?: array )=> bool) => array |
---|---|
例 | $filter([1,2,3,4,5], fn($e){ $e>3}) -> [4, 5] |
join
オプションの区切り文字列を使用して、配列の要素を文字列に結合します。
構文 | $join($arr: array, $separator?: string) => string |
---|---|
例 |
$join(["hello", "world"]) -> "helloworld" $join(["hello", "world"], "-") → "hello-world" $join([1,2,3], "..") -> "1..2..3"
|
json
オブジェクトを JSON 文字列に変換します。
構文 | $json($val:any) => string |
---|---|
例 | $json({"a": 1, "b" : "hello"}) -> "{"a":1,"b":"hello"}" |
jsonParse
JSON 文字列をオブジェクトにパースします。
構文 | $jsonParse($val:string) => object |
---|---|
例 | $jsonParse('{"one": 1, "two": [3, "four"]}') -> {"one": 1,"two": [ 3,"four"]} |
keys
オブジェクトのキーの配列を返します。
構文 | $keys($obj: object) => array |
---|---|
例 |
"Product": [ { "Product Name": "Bowler Hat", "ProductID": 858383, "SKU": "0406654608", "Description": { "Colour": "Purple", "Width": 300, "Height": 200, "Depth": 210, "Weight": 0.75 }, "Price": 34.45, "Quantity": 2 } ] $keys(Product) -> ["Product Name","ProductID","SKU","Description","Price","Quantity"]
|
length
文字列の長さを返します。
構文 | $length($str: string) => number |
---|---|
例 |
$length("abc") -> 3 $length("") -> 0
|
lookup
オブジェクトのキーの値を返します。
構文 | $lookup($obj: object, $key: string) => any |
---|---|
例 | ($o := { "name" : "John", "email": "john@gmail.com"}; $lookup($o, "name")) -> "John" |
lowercase
小文字の文字列を返します。
構文 | $lowercase($str: string) => string |
---|---|
例 | $lowercase("Hello World") -> "hello world" |
map
関数を使用して配列の各要素をマップし、マップされたすべての要素を持つ新しい配列を返します。
構文 | $map($arr: array, $func: ($e, $index?: number, $ar?: array) => any ) => array |
---|---|
例 | $map([1,2,3,4,5], fn($e){ $e *2}) -> [2,4,6,8,10] |
max
数値配列から最大値を返します。
構文 | $max($array) => number |
---|---|
例 | $max([9,2,17,3]) -> 17 |
match
パターンにマッチする文字列の配列を返します。
構文 | $match($str: string, $pattern: string | regex) => array |
---|---|
例 | $match("ababbabbbcc",/a(b+)/) -> ["ab", "abb", "abbb"] |
merge
オブジェクトの配列に含まれる各オブジェクトのプロパティをマージした新しいオブジェクトを返します。
構文 | $merge($arr: array) => object |
---|---|
例 | $merge([{"a":1},{"b":2}]) -> {"a": 1,"b": 2} |
not
値が false の場合は true を、そうでない場合は false を返します。
構文 | $not($x: any) => bool |
---|---|
例 |
$not(true) -> false $not(false) -> true $not(null) -> true $not(0) -> true $not(100) -> false $not("") -> true $not("hello") -> false
|
pad
$pad(指定した場合)で特定の長さにパディングした文字列のコピーを返します。
構文 | $pad($str: string, $length: number, $pad?: string) => string |
---|---|
例 |
$pad("example", 5) -> "example " $pad("example", 5, "-") -> "example--"
|
partition
配列をサイズ $n の配列の配列に分割します。
構文 | $partition($arr: array, $n: numbers) => array |
---|---|
例 |
$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
パターンが出現する箇所をすべて置換文字列に置き換えた文字列を返します。
構文 | $replace($str: string, $pattern: string | regex, $replacement: string) => 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($arr: array, $func: ($prev: any, $cur: any) => any, $init?: any) => array |
---|---|
例 | $reduce([1,2,3,4], fn($prev, $cur) { $prev*$cur}) ) -> 24 |
split
文字列を、パターンを使って文字列の配列に分割します。
構文 | $split($str: string, $pattern: string | regex, $flags?: string) => array |
---|---|
例 |
$split("so many words", " ") -> [ "so", "many", "words" ] $split("so many words", " ", 2) -> [ "so", "many" ] $split("too much, punctuation. hard; to read", /[ ,.;]+/) -> ["too", "much", "punctuation", "hard", "to", "read"]
|
spread
キーと値のペアを1つずつ持つオブジェクトの配列を返します。キーはプロパティの名前、値はプロパティの値です。
構文 | $spread($val: any) => array<object> |
---|---|
例 | $spread({ "a": 1, "b": 2}) -> [ { "a" : 1}, {"b": 2}] |
string
入力値の文字列表現を返します。$prettify が true の場合、出力文字列は読みやすくフォーマットされます。
構文 | $string($value: any, $prettify?: bool) => string |
---|---|
例 |
$string({"a": 1, "b": 2}) -> "{"a":1, "b" : 2}" $string(5) -> "5" $string([1,2,3]) -> ["1", "2", "3"]
|
substring
\$start から始まる、(指定した場合)$length の長さの部分文字列を返します。
構文 | $substring($str: string, $start: number, $length?: number) => string |
---|---|
例 |
$substring("hello world", 0, 5) -> "hello" $substring("hello world", -5, 5) -> "world"
|
substringAfter
区切り文字が最初に現れた後の部分文字列を返します。
構文 | $substringAfter($str: string, $separator: string) => string |
---|---|
例 | $substringAfter("abc@gmail.com", "@") -> "gmail.com" |
substringBefore
区切り文字が最初に現れる前の部分文字列を返します。
構文 | $substringBefore($str: string, $separator: string) => string |
---|---|
例 | $substringBefore( "john@gmail.com", "@") -> "john" |
sum
数値配列の値の合計を返します。
構文 | $sum($array) => number |
---|---|
例 | $sum([1,2,3,4]) -> 10 |
trim
先頭と末尾の空白を除去した文字列のコピーを返します。
構文 | $trim($str: string) => string |
---|---|
例 | $trim(" Hello \n World ") -> "Hello World" |
type
値の型を返します。
構文 | $type($val: any) => string |
---|---|
例 |
$type("hello") -> "string" $type(1) -> "number" $type({}) -> "object" $type([]) -> "array" $type(null) -> "null"
|
uppercase
大文字の文字列を返します。
構文 | $uppercase($str: string) => string |
---|---|
例 | $uppercase("hello") -> "HELLO" |
uuid
一意な ID(UUID バージョン4)を文字列で返します。
構文 | $uuid => string |
---|---|
例 | $uuid -> "503c5a9f-b8fb-402a-b0d7-fae17490bdf6" |
配列関数
append
配列の末尾に値を追加した新しい配列を返します。
構文 | $append($arr: array, $val: any) => array |
---|---|
例 |
$append([1,2,3], [5,6]) -> [1,2,3,4,5,6] $append([1,2,3], 5) -> [1,2,3,5]
|
count
配列の要素数を返します。
構文 | $count($array) => number |
---|---|
例 |
$count([1,2,3,4,5]) -> 5 $count([]) -> 0
|
distinct
$arr の要素から重複を取り除いた新しい配列を返します。
構文 | $distinct($arr: array) => array |
---|---|
例 | $distinct(["a", "b", "b", "c"]) -> ["a", "b", "c"] |
reverse
配列の要素を逆順に並べた新しい配列を返します。
構文 | $reverse($arr: array) => array |
---|---|
例 | $reverse([1,2,3,4,5]) -> [5,4,3,2,1] |
shuffle
配列の要素をランダムな順序で並べた新しい配列を返します。
構文 | $shuffle($arr: array) => array |
---|---|
例 | $shuffle([1,2,3,4]) -> [3,1,4,2] |
sort
$swapFn 関数を使用して配列の要素をソートする高階関数です。比較関数は2つの引数を取ります。これが true を返した場合は、要素が入れ替わります。
構文 | $sort($arr: array, $swapFn: ($l, $r) => bool) => bool |
---|---|
例 |
$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
2つ以上の配列を受け取り、配列の集合からそれぞれの値を畳み込み(zip)ます。
構文 | $zip($ar1:array, $ar2:array, $ar3;array, ...) => array |
---|---|
例 | $zip([1,2,3],[4,5,6]) -> [[1,4],[2,5],[3,6]] |
数値関数
abs
数値の絶対値を返します。
構文 | $abs($num: number) => number |
---|---|
例 | $abs(-1) -> 1 |
acos
ラジアン単位の逆余弦を返します。結果は 0 から pi の間です。数値は -1 から 1 の間でなければなりません。
構文 | $acos($num: number) => number |
---|---|
例 | $acos(1) -> 0 |
acosh
ラジアン単位の逆双曲線余弦を返します。数値は 1 から inf の間の数値でなければなりません。結果は 0 から inf の間です。
構文 | $acosh($num: number) => number |
---|---|
例 | $acosh(1) -> 0 |
asin
ラジアン単位の逆正弦を返します。結果は -pi/2 から pi/2 の間です。数値は -1 から 1 の間でなければなりません。
構文 | $asin($num: number) => number |
---|---|
例 | $asin(1) -> 1.5707963267948966 |
asinh
ラジアン単位の逆双曲線正弦を返します。結果は -inf から inf の間です。
構文 | $asinh($num: number) => number |
---|---|
例 | $asinh(1) -> 1.5707963267948966 |
atan
ラジアン単位の逆正接を返します。結果は -pi/2 から pi/2 の間です。
構文 | $atan($num: number) => number |
---|---|
例 | $atan(1) -> 0.7853981633974483 |
atanh
ラジアン単位の逆双曲線正接を返します。数値は -1 から 1 の間の数値でなければなりません。結果は -inf から inf の間です。
構文 | $atanh($num: number) => number |
---|---|
例 | $atanh(1) -> inf |
atan2
ラジアン単位の atan(y / x) を返します。結果は -pi と pi の間です。原点から点 (x, y) への平面上のベクトルは、正の X 軸に対してこの角度を作ります。両方の入力の符号がわかっているので、角度の正しい象限を計算することができます。例えば、atan(1) と atan2(1, 1) はどちらも pi/4 ですが、atan2(-1, -1) は -3*pi/4 です。
構文 | $atan2($x: number, $y: number) => number |
---|---|
例 | $atan2(-1, -1) -> -2.356194490192345 |
cbrt
数値の立方根を返します。
構文 | $cbrt($num: number) => number |
---|---|
例 | $cbrt(27) -> 3 |
ceil
指定された数値以上の整数のうち、最小の整数を返します。
構文 | $ceil($num: number) => number |
---|---|
例 | $ceil(3.4) -> 4 |
constant
指定された名前の定数値を返します。例: e、ln 2、log2 e、log10 e、pi、π。
構文 | $constant($name: string ) => number |
---|---|
例 | $constant('e') -> 2.718281828459045 |
cos
ラジアン単位の余弦を返します。
構文 | $cos($num: number) => number |
---|---|
例 | $cos(1) -> 0.5403023058681398 |
cosh
ラジアン単位の双曲線余弦を返します。
構文 | $cosh($num: number) => number |
---|---|
例 | $cosh(1) -> 1.5430806348152437 |
exp
e をべき乗した数値を返します。e = 2.718281... は自然対数の底です。
構文 | $exp($num: number) => number |
---|---|
例 | $exp(16) -> 8886110.520507872 |
floor
指定された数値以下の最大の整数を返します。
構文 | $floor($num: number) => number |
---|---|
例 | $floor(3.4) -> 3 |
formatBase
オプションの基数で数値を文字列に変換します。基数を指定しなかった場合は、基数 10 で文字列を作成します。
構文 | $formatBase($num: number, $base?: number) => string |
---|---|
例 | $formatBase(100, 2) -> "1100100" |
isFinite
入力された値が無限大でなければ true を、そうでなければ false を返します。
構文 | $isFinite( $num: number ) => number |
---|---|
例 |
$isFinite(1) -> true $isFinite(inf) -> false
|
log
数値の自然対数を返します(底 e)。
構文 | $log($num: number) => number |
---|---|
例 | $log(16) -> 2.772588722239781 |
log10
数値の底 10 の対数を返します。
構文 | $log10($num: number) => number |
---|---|
例 | $log10(16) -> 1.2041199826559248 |
log2
数値の底 2 の対数を返します。
構文 | $log2($num: number) => number |
---|---|
例 | $log2(16) -> 4 |
number
値を数値に変換します。
構文 | $number($x: string | number | bool) => number |
---|---|
例 |
$number("-0.05") -> -0.05 $number(false) -> 0 $number(true) -> 1
|
power
\$num を $exp のべき乗にしたものを返す。
構文 | $power($num: number, $exp: number) => number |
---|---|
例 |
$power(2, 3) -> 8 $power(3,4) -> 81
|
random
0 から 1 までのランダムな数値を返します。
構文 | $random() => number |
---|---|
例 | $random() -> 0.5729762308974999 |
round
小数点以下の桁数をオプションの精度で数値を丸めます。精度が負の場合、その値は小数点の左側のどの桁に丸めるかを指定します。
構文 | $round($num: number, $precision?: number) => number |
---|---|
例 |
$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
ラジアン単位の正弦を返します。
構文 | $sin($num: number) => number |
---|---|
例 | $sin(1) -> 0.8414709848078965 |
sinh
ラジアン単位の双曲線正弦を返します。
構文 | $sinh($num: number) => number |
---|---|
例 | $sinh(1) -> 1.1752011936438014 |
sqrt
数値の平方根を返します。
構文 | $sqrt($num: number) => number |
---|---|
例 | $sqrt(16) -> 4 |
tan
ラジアン単位の正接を返します。
構文 | $tan($num: number) => number |
---|---|
例 | $tan(1) -> 1.5574077246549023 |
tanh
ラジアン単位の双曲線正接を返します。
構文 | $tanh($num: number) => number |
---|---|
例 | $tanh(1) -> 0.7615941559557649 |
日付・時刻関数
afterDate
\$timestamp1 が $timestamp2 の後である場合に true を返し、そうでない場合に false を返します。
構文 | $afterDate($timestamp1: string |number, $timestamp2: string |number) => bool |
---|---|
例 |
$afterDate("2023-02-09", "2023-02-08") -> true $afterDate("2023-02-08", "2023-02-08") -> false
|
beforeDate
\$timestamp1 が $timestamp2 の前である場合に true を返し、そうでない場合に false を返します。
構文 | $beforeDate($timestamp1: string |number, $timestamp2: string |number) => bool |
---|---|
例 |
$beforeDate("2023-02-07", "2023-02-08") -> true $beforeDate("2023-02-08", "2023-02-08") -> false
|
dateEquals
2つのタイムスタンプが同じであれば true を返し、そうでなければ false を返します。
構文 | $dateEquals($timestamp1: string |number, $timestamp2: string |number) => bool |
---|---|
例 |
$dateEquals("2023-02-08", "2023-02-08") -> true $dateEquals("2023-02-08", "2023-02-07") -> false
|
datePlus
\$units 単位の期間を \$timestamp に追加し、新しいタイムスタンプを返します。\$units は、["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] のいずれかとなります。$duration がゼロより小さい場合は、\$timestamp から差し引かれます。
構文 | $datePlus($timestamp1: string |number, $duration: number, $units) => number |
---|---|
例 |
$datePlus("2023-02-07", 2, "days") -> 1675900800000 $datePlus("2023-02-07", 2, "months") -> 1680825600000
|
day
タイムスタンプから日を抽出し、数値として返します。
構文 | $day($timestamp: string |number) => number |
---|---|
例 | $day("2023-02-08") -> 8 |
dayOfTheWeek
曜日を数値 [1=月曜日, ... 6=土曜日, 7=日曜日] で返します。
構文 | $dayOfTheWeek($timestamp: string |number) => number |
---|---|
例 |
$dayOftheWeek("2023-02-08") -> 3 $dayOftheWeek("2023-02-07") -> 2
|
diffDate
2つのタイムスタンプの差を、["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] のいずれかで指定された単位で返します。
構文 | $diffDate($timestamp1: string |number, $timestamp2: string |number, $units : string) => number |
---|---|
例 |
$diffDate("2023-02-08", "2023-01-22", "days") -> 17 $diffDate("2023-02-08", "2023-01-22","hours") -> 408
|
fromMillis
エポックからのミリ秒数を文字列に変換します。$picture はオプションで、省略した場合のデフォルトは ISO 形式となります。ピクチャー仕様は、Unicode の日付書式標準に従います。
構文 | $fromMillis($val:number, $picture?: string) => string |
---|---|
例 |
$fromMillis(1521801216617, "dd/M/yyyy") -> "23/3/2018" $fromMillis(1522616700000, "E EEEE") -> "7 Sunday"
|
hasSameDate
2つのタイムスタンプの \$units で指定した構成要素が同じであれば true を、そうでなければ false を返します。$units は、["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"] の中からひとつ以上の文字列を指定した配列となります。
構文 | $hasSameDate($timestamp1: string |number, $timestamp2: string |number, units?: array) => bool |
---|---|
例 |
$hasSameDate("23-02-08", "2019-02-08", ["month", "day"]) -> true $hasSameDate("2023-02-01", "2023-02-08", ["month", "year"]) -> true $hasSameDate("23-02-01", "2023-02-08", ["month", "year"]) -> true $hasSameDate("2023-02-01T07:15:54.730Z", "2023-02-01T14:00:22.340Z", ["year","month", "day"]) -> true
|
hours
タイムスタンプからローカルの時を抽出し、数値として返します。
構文 | $hours($timestamp: string |number) => number |
---|---|
例 | $hours("2023-02-08T07:56:14.747+00:00") -> 7 |
millis
現在の時刻をエポックからの Unix ミリ秒単位で返します。
構文 | $millis() => number |
---|---|
例 | $millis() -> 1667601477254 |
milliSeconds
タイムスタンプからミリ秒を抽出し、数値として返します。
構文 | $milliSeconds($timestamp: string |number) => number |
---|---|
例 | $milliSeconds("2023-02-08T07:56:14.747+00:00") -> 747 |
minutes
タイムスタンプから分を抽出し、数値として返します。
構文 | $minutes($timestamp: string |number) => number |
---|---|
例 | $minutes("2023-02-08T07:56:14.747+00:00") -> 56 |
month
タイムスタンプから月を抽出します。
構文 | $month($timestamp: string |number) => number |
---|---|
例 | $month("2023-02-08") -> 2 |
now
現在の時刻を ISO 8601 フォーマットで返します。
構文 | $now() => string |
---|---|
例 | $now() -> "2022-11-04T22:36:57.094Z" |
seconds
タイムスタンプからローカルの秒を抽出し、数値として返します。
構文 | $seconds($timestamp: string |number) => number |
---|---|
例 | $seconds("2023-02-08T07:56:14.747+00:00") -> 14 |
toMillis
文字列をエポックからのミリ秒数に変換します。$picture はオプションで、省略した場合のデフォルトは ISO 形式となります。ピクチャー仕様は Unicode の日付書式標準に従います。
構文 | $toMillis($val:string, $picture?: string) => number |
---|---|
例 |
$toMillis("1970-01-01T00:00:00.001Z") -> 1 $toMillis("2018-03-27", "yyyy-MM-dd") -> 1522108800000 $toMillis("21 August 2017", "dd MMMM yyyy") -> 1503273600000
|
year
タイムスタンプから年を抽出し、数値として返します。
構文 | $year($timestamp: string |number) => number |
---|---|
例 | $year("2023-02-08T07:56:14.747+00:00") -> 2023 |