JavaScriptのflat()メソッドではフラットにならないことがある

flat()メソッドとは

ネストされた配列構造をフラット化するためのメソッド。

ただし、引数なしでフラット化できるのは1つ深さだけなので2つ以上の場合は数値かInfinityを引数として指定する必要がある。

flat()を引数なしでも一次元配列に変換するメソッドだと勘違いして使用していると思われるJavaScriptコードをたまに見かけることがあるため、使用する際は注意が必要です。

一次元配列に変換するだけの目的で使用する場合は必ずflat(Infinity)で使用してください。

const arr = [1, 2, [3, 4, [5, [6]]]]

console.log(arr.flat())
// [1, 2, 3, 4, [5, [6]]]

console.log(arr.flat(2))
// [1, 2, 3, 4, 5, [6]]

console.log(arr.flat(Infinity))
// [1, 2, 3, 4, 5, 6]