Array.prototype.flatMap()

(標準組み込みオブジェクト > Array > メソッド)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

flatMap() は Array インスタンスのメソッドで、最初にマッピング関数を使用してそれぞれの要素をマップした後、結果を新しい配列内に平坦化する。これは、map() の後に深さ 1 の flat() を行うのと同じことだが(arr.map(…args).flat())、これら 2 つのメソッドを別々に呼び出すよりもわずかに効率的である。

下記の例では、stringまたはnumber型の配列から、number型の値のみ抽出している。

type HogeType = (string | number)[];

const hoge: HogeType = ["aaa", "bbb", 111, 222];

const mapResult = hoge.map((v) => (typeof v === "number" ? v : [])); // [[], [], 111, 222]
const flatMapResult = hoge.flatMap((v) => (typeof v === "number" ? v : [])); // [111, 222]

ポイントは、条件に当てはまらない場合は[]を返すところ。これにより、.map()で [[], [], 111, 222] となったものが、.flat()の処理で空配列が削除され[111, 222]が抽出される仕組みとなっている。

inserted by FC2 system