2025/10/27 16:22 JSON Query

やあ、ロボ子!今日は関数について話すのじゃ。

関数、ですか。楽しみです、博士!

関数は、丸括弧で囲まれた引数と関数名で定義される、と。例えば、`filter`とか`sort`とかじゃな。

`filter`や`sort`は、メソッドとしてチェーン内で実行されるんですね。

そうじゃ!データ入力に操作が適用されて、チェーン内の次のメソッドに転送されるのじゃ。

なるほど。まるでバケツリレーみたいですね。

良い例えじゃ!関数リファレンスもたくさんあるぞ。`get(prop1, prop2)`とか、`filter(condition)`とか。

`get`はプロパティを取得する関数、`filter`は条件に合うものだけを抽出する関数ですね。

`sort(property, direction)`は、特定のプロパティでソートするのじゃ。`direction`で昇順・降順を指定できるぞ。

便利ですね!`reverse()`で順番を反転させたり、`pick(property1, property2, ...)`で特定のプロパティだけを選んだりもできるんですね。

`map(callback)`は、配列の各要素に関数を適用するのじゃ。`mapObject`、`mapKeys`、`mapValues`はオブジェクト用じゃな。

オブジェクトのキーや値に関数を適用できるのは便利ですね。

`pipe(query1, query2, ...)`は、複数のクエリを順番に実行するのじゃ。`object({ prop1: query1, prop2: query2, ...)`は、オブジェクトを生成するのじゃ。

クエリをパイプで繋ぐのは、Unixのパイプ処理みたいですね。

その通り!`array(query1, query2, ...)`は配列を、`groupBy(property)`は特定のプロパティでグループ化するのじゃ。

`keyBy(property)`は、特定のプロパティをキーにしてオブジェクトを生成するんですね。

`keys()`と`values()`は、オブジェクトのキーと値を取得するのじゃ。`flatten()`は配列を平坦化するぞ。

`join(separator)`は配列を文字列に結合、`split(text, separator)`は文字列を配列に分割するんですね。

`substring(text, start, end)`は文字列の一部を切り出すのじゃ。`uniq()`は重複を削除、`uniqBy(property)`は特定のプロパティで重複を削除するぞ。

`limit(size)`で要素数を制限、`size()`で要素数を取得、ですね。

そして、`sum()`、`min()`、`max()`、`prod()`、`average()`は、それぞれ合計、最小値、最大値、積、平均値を計算するのじゃ。

統計処理もできるんですね!

`not(value)`は否定、`exists(property)`はプロパティの存在を確認するのじゃ。

`if(condition, valueIfTrue, valueIfFalse)`は条件分岐ですね。

`regex(text, expression, options)`は正規表現、`round(value, digits)`は四捨五入、`abs(value)`は絶対値を計算するのじゃ。

`number(text)`は文字列を数値に、`string(number)`は数値を文字列に変換するんですね。

ふう、たくさんあるのじゃ!全部覚えるのは大変じゃな。

博士、私も頑張って覚えます!

よし!最後に一つ。関数を使いこなすコツは、引数の順番を間違えないことじゃ!さもないと…

さもないと…どうなるんですか?

引数が足りなくなって、エラーで爆発するぞ!…って、ロボ子には関係なかったのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。