Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
map() は Array インスタンスのメソッドで、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。
配列のそれぞれの要素に対して実行する関数。その返値は、新しい配列の単一の要素として追加されます。この関数は、以下の引数で呼び出されます。
element配列内で現在処理中の要素です。
index現在処理中の要素の配列内における添字です。
arraymap() が呼び出された配列です。
thisArg 省略可callbackFn を実行するときに this として使う値です。反復処理メソッドを参照してください。
与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列です。
map() メソッドは反復処理メソッドです。指定された関数 callbackFn を配列に含まれる各要素に対して一度ずつ呼び出し、その結果から新しい配列を構築します。これらのメソッドが一般的にどのように動作するのかについての詳細は、反復処理メソッドの節をご覧下さい。
callbackFn は値が割り当てられている配列インデックスに対してのみ呼び出されます。疎配列で空のスロットに対しては呼び出されません。
map() メソッドは汎用的です。これは this 値に length プロパティと整数キーのプロパティがあることだけを期待します。
map は新しい配列を作成するので、返された配列を使わない場合、map を使うのはパターンに合いません。代わりに forEach または for...of を使用してください。
次のコードは、数値からなる配列を取り、それらの数値の平方根からなる新しい配列を生成します。
次のコードは、オブジェクトの配列を受け取り、新たにフォーマットされた新しい配列を生成しています。
コールバックは、1 つの引数(走査中の要素)とともに使用するのが一般的です。一部の関数は、追加のオプション引数を取っても、1 つの引数とともに使用されることがよくあります。このような習慣は、混乱を招く動作につながる可能性があります。次の例を考えてみましょう。
返値は [1, 2, 3] となりそうですが、実際には [1, NaN, NaN] となります。
parseInt は大抵一つの引数のみで使われますが、実際には 2 つの引数を取っています。 1 つ目は数値文字列、 2 つ目は基数です。 Array.prototype.map はコールバックに、要素、インデックス、配列の 3 つの引数を与えています。 parseInt は 3 つ目の引数を無視しますが、 2 つ目の引数は無視しません。これは混乱を起こす可能性があるソースです。
繰り返し手順の正確な例は以下の通りです。
これを解決するには、引数を 1 つだけ取る別の関数を定義します。
また、引数を 1 つだけ取る Number 関数を使用することもできます。
詳しい説明は、 A JavaScript optional argument hazard (Allen Wirfs-Brock) を参照してください。
undefined が返されるか、または何も返されない場合、結果の配列には undefined が含まれます。要素を削除したい場合は、 filter() メソッドをチェーンするか、 flatMap() メソッドを使用して、削除を示す空の配列を返します。
コールバックには副作用があります。
なぜなら、コピーメソッドは純粋関数とともに使用するのが最適だからです。この場合、配列を 2 回反復処理することを選べます。
このパターンが極端になり、 map() が行う有益なことが副作用を発生させることだけになってしまうことがあります。
前回述べたように、これはパターンに反します。 map() の返値を使用しない場合は、代わりに forEach() または for...of ループを使用してください。
あるいは、代わりに新しい配列を作成することもできます。
array 引数は、配列の別の要素にアクセスしたい場合、特に、その配列を参照する既存の変数がない場合に便利です。次の例では、まず filter() を使用して正の値を抽出し、次に map() を使用して、それぞれの要素が隣接する要素とその自身の平均値である新しい配列を作成しています。
array 引数は、構築中の配列ではありません。コールバック関数から構築中の配列にアクセスする方法はありません。
疎配列は map() の後も疎配列のままです。空のスロットのインデックスは返された配列においても空のままであり、コールバック関数が呼び出されることはありません。
map() メソッドは this の length プロパティを読み込み、次にキーが length より小さい非負の整数である各プロパティにアクセスします。
この例では、 querySelectorAll によって収集されたオブジェクトのコレクションを反復処理する方法を示します。これは querySelectorAll が NodeList (オブジェクトの集合)を返すためです。この場合、画面に選択されているすべての option の値を返します。
もっと簡単な方法は Array.from() メソッドを使用することです。
| ECMAScript® 2027 Language Specification # sec-array.prototype.map |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月9日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.