JavaScriptのArray.flatMap()メソッドとは?ネスト配列をフラット化する使い方を実例で解説
JavaScriptのflatMap()メソッドは、ネストされた配列の各要素にコールバック関数を適用し、その結果を1階層だけ平坦化(フラット化)して、新しい配列として返します。「map()」と「flat()」を組み合わせた処理を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>このサンプルでは、文字列と配列が混在したネスト構造の配列 ["cow", ["bull", "lion", "tiger"], "sheep"] を用意し、ボタンをクリックすると arr.flatMap((x) => x) によってすべての要素が同一階層に展開されます。
出力結果
ページを開いた直後の表示:

「CLICK HERE」ボタンをクリックした後の表示:

ボタンを押す前はインデックス0〜2までの要素がそのまま表示されていますが、クリック後はネストされていた「bull」「lion」「tiger」が取り出され、全体が1つのフラットな配列として再表示されることが確認できます。
-
JavaScriptのArray.prototype.flatMap()メソッドとは?ネストした配列をフラット化する方法
JavaScriptのArray.prototype.flatMap()メソッドは、ネストされた(入れ子構造の)配列を、新しいフラットな(平坦な)配列へと変換するメソッドです。 flatMap()は、各要素に対してmap()のコールバック関数を実行した後、その結果を深さ1でフラット化します。つまり、「map()してからflat()を呼ぶ」処理を、1つのメソッドで簡潔に記述できるのが大きな特徴です。 flatMap()の基本的な動作 flatMap()の構文は以下の通りです。 arr.flatMap(callbackFn) コールバック関数が配列を返す場合、その返り値の配列が自動的に展開され、結
-
JavaScriptのArray.flatMap()メソッドでネストした配列をフラット化する方法
JavaScriptのArray.flatMap()メソッドは、ネスト(入れ子)された配列に対して各要素に関数を適用した結果を、新しいフラット(平坦化)な配列として返します。map()による変換と、深さ1の配列の平滑化を一度に行える便利なメソッドです。 以下は、Array.flatMap()メソッドの動作を確認できるサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name