TypedArray.prototype.map()

map() メソッドは、与えられた関数を型付き配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。このメソッドは、Array.prototype.map()と同じアルゴリズムです。 TypedArray は、ここでは型付き配列型の一つです。

構文

typedArray.map(mapFn[, thisArg])

引数

mapFn

新しい型付き配列の要素を生み出すコールバック関数で、3つの引数を取ります。

currentValue
現在処理中の要素の値です。
index Optional
現在処理中の要素の型付き配列内における添字です。
array Optional
map() が実行されている型付き配列です。
thisArg Optional
mapFn を実行するときに this として使う値です。

返値

新しい型付き配列です。

解説

map() は、与えられたコールバック関数 (mapFn) を型付き配列の各要素に対して、順番通りに一度ずつ呼び出し、その結果から新しい配列を生成します。

mapFn は型付き配列のインデックスのうち、値が割り当てられているものにのみ呼び出しす。 undefined であるインデックス、すなわち削除されたか値が割り当てられたことがないインデックスには呼び出しません。

mapFn は、要素の値、要素の添字、走査中の型付き配列オブジェクトという 3 つの引数をともなって呼び出されます。

thisArg 引数が map() に与えられた場合は、それが mapFn の呼び出し時に渡され、 this として使用されます。そうでない場合は、 undefinedthis の値として使用されます。 mapFn から最終的に見える this の値は、関数における通常の this を決定するルールに従って決まります。

map() は呼び出された型付き配列を変化させません (ただし、 mapFn が呼び出されたあ愛は、変更する可能性はあります)。

map() によって処理される要素の範囲は、 mapFn が最初に呼び出される前に設定されます。 map() の呼び出しが開始された後に追加された要素に対しては、 mapFn は実行されません。既存の配列要素が変更されたり、削除された場合、 mapFn に渡される値は map() がそれらを訪れた時点での値になり、削除された要素を訪問することはありません。

型付き配列を平方根の型付き配列にマッピング

次のコードは型付き配列を取り、最初の型付き配列にある数値の平方根からなる新しい型付き配列を生成します。

const numbers = new Uint8Array([1, 4, 9]);
const roots = numbers.map(Math.sqrt);
// roots の内容は [1, 2, 3] となる
// numbers の内容は [1, 4, 9] のまま

引数を含む関数を使用して型付き配列をマッピングする

次のコードは、1 つの引数を必要とする関数を使用するときに map() がどのように動作するかを示しています。引数は元の配列を通した map() ループとして、配列の各要素に自動的に割り当てられます。

const numbers = new Uint8Array([1, 4, 9]);
const doubles = numbers.map(function(num) {
  return num * 2;
});
// doubles is now Uint8Array [2, 8, 18]
// numbers is still Uint8Array [1, 4, 9]

仕様書

仕様書
ECMAScript (ECMA-262)
TypedArray.prototype.map の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
mapChrome 完全対応 45Edge 完全対応 14Firefox 完全対応 38IE 未対応 なしOpera 完全対応 32Safari 完全対応 9.1WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 38Opera Android 完全対応 32Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報