私は長さを除くノデリストを除くことを繰り返すための最良の方法を探しています。使ってます:
var foo = document.querySelectorAll('[id^=foo_id]')
console.log(foo)
_
返されたNodeListには、必要な要素+ Lengthの最後のエントリがあります。
0: input#foo_id_...
1: input#foo_id_...
..................
n: input#foo_id_...
length: n+1
_
私はそのノデリストを通して反復するための最も効率的な方法を疑問に思います。リストの長さなどを利用できますが、より「優雅」な方法があるかどうかを知りたいです。
最も簡単な方法はfor
ループです。
_for (let i = 0; i < foo.length; i++) {
// Do stuff
}
_
これは ここでの 指摘されているのは最良の解決策です( - === - )アレイメソッドを使用するか、またはNodeListを配列に変換することは悪いです - 必要な場合は別の変数を使用します。に、しかしfor
ループはすべてノデリストをループする必要があるのです。 (これを私に指すように感謝します)。
forEach
、map
などのような配列メソッドを使用したい場合は、最初に配列に最もよく変換されます。これは拡散で非常に簡単です。
_[...foo].forEach(e /* Do stuff */);
_
map
を特に使用したい場合は、2番目の引数として_Array.from
_を使用すると、map
に適用されるコールバックです。
_Array.from(foo, e => /* .map callback */);
_
そして古い環境で:
_Array.prototype.slice.call(foo).forEach(e => /* Do stuff */);
_
(私はあなたがNodeListで配列メソッドを使用できることを知っていますが、1つのデータ型の使用に固執するならばは簡単です。)
NodeListは配列ではありませんが、foreach()でそれを繰り返すことが可能です。