document.querySelectorAll
の結果は NodeList
で、forEach
はできるが map
や reduce
はできない。
例えば、いくつかのテキストボックスに入力された数字を合計したい場合、document.querySelectorAll
の結果をスプレッド構文で配列にするとよさそう。
const sum = [...document.querySelectorAll('.foo')] .map(e => e.value) .reduce((acc, e) => acc + parseInt(e), 0)
(追記) ドキュメントに書いてあった...。
メモ:
NodeList
はArray
とは異なりますが、forEach()
メソッドで処理を反復適用することは可能です。Array.from()
を使うことでArray
に変換することができます。