【ふぃるたーかんすう】
filter関数 とは?
最終更新:
💡 条件に合う要素だけを「ふるいにかけて」選び出す
条件に合う要素を選び出す関数。ここではJavaScriptのArray.prototype.filterを扱い、条件関数の結果が真と判定される要素を順番どおり新しい配列に集める。
📌 このページのポイント
- JavaScriptでは、条件関数の結果が真と判定される要素を選ぶ
- 選んだ要素の順序を保った新しい配列を返す
- filter自体は元配列を書き換えないが、条件関数は書き換え得る
- 通常の条件判定で該当要素がなければ、空の配列を返す
filter関数ってどう使うの?
JavaScriptなら、数値の配列に「nums.filter(x => x >= 5)」と書けるよ。[1, 8, 3, 12, 2, 7]から、5以上の[8, 12, 7]を選び出すんだ。ここではJavaScriptの配列のfilterを説明するね。
mapとfilterの違いは何?
mapは各要素を変換し、filterは条件で選ぶよ。たとえばfilterで5以上を選んでから、mapでそれぞれを2倍にできる。filterの結果は元より短くなることも、全要素が残ることもあるんだ。
条件関数はtrueだけを返さないといけない?
JavaScriptでは、返した値を真偽値として判定するよ。厳密なtrueだけではないんだ。分かりやすい比較式を使うと、何を残す条件なのか読み取りやすいね。
元の配列は絶対に変わらないの?
何も条件に合わなかったら?
条件関数が通常どおり動けば、空の配列を返すよ。ただし条件関数で例外が起きれば、それはfilterの外へ伝わる。複数回つなぐときは前の結果を次が調べるので、速さを決めつけず、必要なら実際の処理を測ろう。
もっと詳しく知りたい人へ
TypeScriptでは、型述語を自分で書かないと型を絞れない?
必ずしもそうではない。TypeScript 5.5以降は、単一のreturnで引数を変更せず、その値の型を絞るboolean式を返すなどの条件を満たすと型述語を推論する。nullを除くx !== nullなどが例。明示的な型述語も使えるが、その宣言が実際の判定と一致するかは書く側で確認する。
まとめ:ざっくりこれだけ覚えればOK!
「filter関数」って出てきたら「条件に合う要素を選び出す処理」と思えばだいたいOK!
📖 おまけ:英語の意味
「filter」 = ろ過する・選別する
💬 コーヒーフィルターのように、条件に合うものだけを通すイメージだよ