これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

flatMap() メソッドは、最初にマッピング関数を使用してそれぞれの要素をマップした後、結果を新しい配列内にフラット化します。これは深さ 1 の flatten が続く map と同じですが、flatMap はしばしば有用であり、2 つのメソッドを 1 つにマージするよりもやや効果的です。

構文

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // return element for new_array
}[, thisArg])

パラメーター

callback
新しい配列の要素を生成する関数。3 つの引数を受け取る:
currentValue
配列で現在処理されている要素。
indexOptional
配列で現在処理されている要素のインデックス。
arrayOptional
map が呼び出された配列。
thisArgOptional
callback を実行するときの this として用いられる値。

戻り値

各要素がコールバック関数の結果であり、深さが 1 にフラット化された新しい配列。

説明

コールバック関数の詳細については、Array.prototype.map() を見てください。flatMap メソッドは、深さ 1 の flatten が続く map と同じです。

mapflatMap

var arr1 = [1, 2, 3, 4];

arr1.map(x => [x * 2]); 
// [[2], [4], [6], [8]]

arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]

// only one level is flattened
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

代替え

reduceconcat

var arr1 = [1, 2, 3, 4];

arr1.flatMap(x => [x * 2]);
// is equivalent to
arr1.reduce((acc, x) => acc.concat([x * 2]), []);
// [2, 4, 6, 8]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

仕様

仕様 ステータス コメント
Array.prototype.flatMap proposal 草案  

ブラウザー実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 なし なし なし1 なし なし なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 なし なし なし なし1 なし なし なし

1. Available in Firefox Nightly only. See bug 1435813 for status on enabling this by default.

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,