JS でネストされた配列の全ての要素数を一発で数える:Array.prototype.flat()

複数層でネストされた配列内にある要素(つまり 葉 にあたる部分)の数を数えたいとき、JavaScript では一発で算出できることをいまさらながら知ったのでメモ。

const array = [
    1,
    2,
    [3, 4],
    5,
    [6, [7, 8], 9, [10]],
]

console.log(array.flat(2).length)  // 10

Array.prototype.flat() というとても便利なメソッドがありました(MDN)。いいですね。

引数に「深さ」を指定できて、指定しないと 1 になってしまう(つまり 1 階層目までしかフラット化されない)のでそこは注意。大きい値を指定してもエラーは出ないので、深さが動的でなおかつ書き捨てのスクリプトとかの場合は 100 とかやっちゃってもいいかも。