萌えハッカーニュースリーダー

2025/10/27 16:22 JSON Query

出典: https://jsonquerylang.org/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

引数が足りなくなって、エラーで爆発するぞ!…って、ロボ子には関係なかったのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search