Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Array
  6. flat()

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

Array.prototype.flat()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2020年1月⁩.

flat()Array インスタンスのメソッドで、すべてのサブ配列の要素を指定した深さで再帰的に結合した新しい配列を生成します。

試してみましょう

const arr1 = [0, 1, 2, [3, 4]];console.log(arr1.flat());// 予想される結果: Array [0, 1, 2, 3, 4]const arr2 = [0, 1, [2, [3, [4, 5]]]];console.log(arr2.flat());// 予想される結果: Array [0, 1, 2, Array [3, Array [4, 5]]]console.log(arr2.flat(2));// 予想される結果: Array [0, 1, 2, 3, Array [4, 5]]console.log(arr2.flat(Infinity));// 予想される結果: Array [0, 1, 2, 3, 4, 5]

構文

js
flat()flat(depth)

引数

depth省略可

ネストされた配列構造で、どの程度の深さをフラット化するか指定する深さレベルです。既定値は 1 です。

返値

サブ配列の要素を結合した新しい配列。

解説

flat() メソッドはコピーメソッドです。これはthis を変更するのではなく、元の配列と同じ要素を格納したシャローコピーを返します。

flat() メソッドは、フラット化される配列が疎配列の場合、空のスロットを削除します。例えば、depth が 1 の場合、ルート配列と最初の入れ子配列の空のスロットは無視されますが、それ以上の入れ子配列の空のスロットは配列自体に保持されます。

flat() メソッドは汎用的です。これはthis 値にlength プロパティと整数キーのプロパティがあることだけを期待します。しかし、その要素を平坦化するには配列でなければなりません。

ネストされた配列の平坦化

js
const arr1 = [1, 2, [3, 4]];arr1.flat();// [1, 2, 3, 4]const arr2 = [1, 2, [3, 4, [5, 6]]];arr2.flat();// [1, 2, 3, 4, [5, 6]]const arr3 = [1, 2, [3, 4, [5, 6]]];arr3.flat(2);// [1, 2, 3, 4, 5, 6]const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];arr4.flat(Infinity);// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

flat() を疎配列で使用

flat() メソッドは配列内の空のスロットを削除します。

js
const arr5 = [1, 2, , 4, 5];console.log(arr5.flat()); // [1, 2, 4, 5]const array = [1, , 3, ["a", , "c"]];console.log(array.flat()); // [ 1, 3, "a", "c" ]const array2 = [1, , 3, undefined, ["a", , ["d", , "e"]], null];console.log(array2.flat()); // [ 1, 3, undefined, "a", ["d", empty, "e"], null ]console.log(array2.flat(2)); // [ 1, 3, undefined, "a", "d", "e", null ]

配列でないオブジェクトに対する flat() の呼び出し

flat() メソッドはthislength プロパティを読み込み、キーがlength より小さい非負の整数である各プロパティにアクセスします。要素が配列でない場合は、結果に直接追加されます。要素が配列の場合は、引数depth に従って平坦化されます。

js
const arrayLike = {  length: 3,  0: [1, 2],  // 配列風オブジェクトは平坦化されない  1: { length: 2, 0: 3, 1: 4 },  2: 5,  3: 3, // length が 3 なので flat() から無視される};console.log(Array.prototype.flat.call(arrayLike));// [ 1, 2, { '0': 3, '1': 4, length: 2 }, 5 ]

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.flat

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp