【JavaScript】map, forEach, filterの違い

目次

こんにちは!エンジニアのひなこです!

JavaScriptでコーディングする時、ループ処理をしたい時がありますよね〜

その時にforEachやmapやfilterがよく使われますが、その違いって何だろうって思う時がありますよね〜

今回改めて調べたので、今後状況に合わせて使い分けられるように、まとめたいと思います!

まず、mapとforEachは、MDN Web Docsにはそれぞれ下記のように説明されています。

map

map() は Array インスタンスのメソッドで、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。」

forEach

forEach() メソッドは、与えられた関数を、配列の各要素に対して一度ずつ実行します。」

簡単にいうと、

mapとforEachは、どちらも配列の要素に対しコールバック関数の処理を行うメソッドです。

違いは、mapの方は配列データを返り値(return)とでき、forEachは返り値は設定できないことです。

map

配列のそれぞれの名前の後ろに「👍」がつけられたものを返り値として、新しい配列を作れました。

forEach

forEachでは返り値を使えないため、returnを書いても、undefinedが出力されます。

filter

MDN Web Docsには下記のように書かれています。

filter() は Array インスタンスのメソッドで、指定された配列の中から指定された関数で実装されているテストに合格した要素だけを抽出したシャローコピーを作成します。」

mapやforEachと決定的に異なるのは「テストに合格した要素だけを抽出」という部分です。

filterの使用例

上記の例では、「고」が含まれるものをフィルターして、一致するものが新たな配列となっています。

まとめ

今回はmap, forEach, filterの違いをまとめてみました!

好きなものを使用例で使うと、それぞれの関数の特徴を楽しく定着することができますね!

次回も学んだことを楽しく文章にして残したいと思います!

参考サイト

Array.prototype.map()

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Array.prototype.forEach()

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Array.prototype.filter()

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

【JavaScriptの基本】配列メソッド -forEach・map・filterの違い

https://tcd-theme.com/2021/07/javascript-array-foreach-map-filter.html