JavaScriptのArray.flatMap()メソッドでネストした配列をフラット化する方法
JavaScriptのArray.flatMap()メソッドは、ネスト(入れ子)された配列に対して各要素に関数を適用した結果を、新しいフラット(平坦化)な配列として返します。map()による変換と、深さ1の配列の平滑化を一度に行える便利なメソッドです。
以下は、Array.flatMap()メソッドの動作を確認できるサンプルコードです。
サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.sample {
font-size: 20px;
font-weight: 500;
}
</style>
</head>
<body>
<h1>JavaScript Array flatMap()</h1>
<div class="sample"></div>
<button class="Btn">CLICK HERE</button>
<h3>
上のボタンをクリックすると、ネストした配列がフラットな配列に変換されます
</h3>
<script>
let fillEle = document.querySelector(".sample");
let arr = ["cow", ["bull", "lion", "tiger"], "sheep"];
for (x of arr.entries()) {
fillEle.innerHTML += x + "<br>";
}
var entries = arr.entries();
document.querySelector(".Btn").addEventListener("click", () => {
arr = arr.flatMap((x) => x);
fillEle.innerHTML = "";
for (x of arr.entries()) {
fillEle.innerHTML += x + "<br>";
}
});
</script>
</body>
</html>
実行結果
上記のコードを実行すると、次のような出力が表示されます。

初期状態では、配列の2番目の要素として「bull」「lion」「tiger」を含むネストされた配列がそのまま表示されています。
「CLICK HERE」ボタンをクリックすると、flatMap()メソッドによって配列が平滑化され、以下のようにすべての要素が同じ階層に並んだフラットな配列へと変換されます。

flatMap()メソッドのポイント
- flatMap()は、map()を実行した後に深さ1で配列を平滑化するのと同じ動作をします。
- コールバック関数で配列を返すと、その要素が展開(フラット化)されて結果に含まれます。
- ネストが2階層以上ある場合は完全には平坦化されないため、そのようなケースではflat()メソッドに引数を指定して使用してください。
-
JavaScriptのArray.flat()メソッドとは?使い方をわかりやすく解説
Array.flat()メソッドの基本JavaScriptのArray.flat()メソッドは、ネストされた(入れ子になった)配列を、指定した深さまで再帰的に平坦化(フラット化)するためのメソッドです。元の配列は変更されず、新しい平坦化された配列が生成される点が特徴です。引数には平坦化の深さ(depth)を数値で指定します。深さを指定しない場合のデフォルト値は「1」です。また、「Infinity」を指定すると、どれほど深くネストされた配列でも完全に平坦化できます。構文arr.flat(depth)depth(省略可能):ネストされた配列を展開する深さ。デフォルトは1。サンプルコード以下は、Ar
-
JavaScriptのArray.prototype.includes()メソッドとは?配列内に特定の要素が含まれるか判定する方法
Array.prototype.includes()メソッドとは JavaScriptのArray.prototype.includes()メソッドは、配列の中に特定の要素が含まれているかどうかを判定するためのメソッドです。要素が見つかった場合はtrue、見つからなかった場合はfalseを返します。 基本構文 arr.includes(searchElement[, fromIndex]) searchElement:検索対象となる要素を指定します。 fromIndex(省略可能):検索を開始するインデックス位置です。省略した場合は先頭(0)から検索されます。 サンプルコード 以下は、in