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

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 草案  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応
実験的
Chrome 完全対応 69Edge 未対応 なしFirefox 完全対応 62IE 未対応 なしOpera 完全対応 56Safari 完全対応 12WebView Android 完全対応 69Chrome Android 完全対応 69Edge Mobile 未対応 なしFirefox Android 完全対応 62Opera Android 完全対応 56Safari iOS 完全対応 12Samsung Internet Android 未対応 なしnodejs 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。

関連項目

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

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