私は時折、dom 要素のコレクション(より正式にはノデリストと呼ばれる)のコレクションを配列のように操作できないという事実に悩まされています。しかし、それは1つのように見えますが、それがJavaScriptの初心者によって頻繁に行われる間違いであると考えるので、私たちの今後のJavaScriptリファレンスのために、私はこのポイントに注意する必要があると感じました。 アレイのようなコレクションを繰り返すことができます。
ただし、push()、splice()、revern()などの配列メソッドを使用して操作することはできません。
for(var i=0; i<collection.length; i++) { //whatever }
上記のコードは完全にクロスブラウザーであり、元のコレクションと呼ばれます。
function collectionToArray(collection) { var ary = []; for(var i=0, len = collection.length; i < len; i++) { ary.push(collection[i]); } return ary; }
ただし、ネイティブオブジェクトのプロトタイピング(Opera、Firefox、およびSafari 3)をサポートするブラウザのみを扱う必要がある場合は、節点奏者のtoArray()メソッドを作成できます。
var elements = collectionToArray(document.getElementsByTagName('*'));
その後、これは個々のコレクションの方法として呼ばれます。
NodeList.prototype.toArray = function() { var ary = []; for(var i=0, len = this.length; i < len; i++) { ary.push(this[i]); } return ary; };
この変換には明らかな不利な点が1つあります(ただし、完了しています)。つまり、結果の配列はノーデリストではなくなります。明らかな、はい、しかし、それには2つの意味があるので関連性があります:
javascriptでは、コレクションは要素のグループを含むオブジェクトです。これらの要素は、他のコレクションを含むあらゆるタイプのものです。同様のアイテムのグループを使用する必要がある場合にコレクションが使用されることがよくありますが、配列と同じ方法とプロパティがありません。一方、配列は、アイテムのリストを表す特別なタイプのオブジェクトです。アレイには、プッシュ、ポップ、シフト、シフトなどのコンテンツを操作およびクエリするための組み込みの方法があります。最も一般的な方法の1つは、array.from()関数を使用することです。この関数は、反復可能なオブジェクトから新しい配列インスタンスを作成します。例は次のとおりです。
この例では、div要素のコレクションはアレイに変換されます。配列。ただし、array.from()またはスプレッド演算子を使用してコレクションを配列に変換し、結果の配列で配列メソッドを使用できます。それらはDOMへのライブリンクを提供します。つまり、DOMが変更された場合、コレクションは自動的に更新されます。これはアレイができないことです。ただし、配列にはデータを操作するためのより組み込みの方法があるため、データ操作タスクにより便利なことがよくあります。
配列のようなオブジェクトは、長さのプロパティを持ち、配列のように特定のインデックスに要素を保存できるオブジェクトです。ただし、プッシュ、ポップなどの配列メソッドはありません。配列のようなオブジェクトの一般的な例は、すべての関数内で使用可能な引数オブジェクトです。
let collection = document.getElementsByTagname( 'div');
let array = [... collection]; JavaScriptの静的コレクションとライブコレクションの違いは何ですか?これは、要素がDOMから追加または削除された場合、これらの変更を反映するためにコレクションが自動的に更新されることを意味します。一方、静的コレクションは、DOMが変更されたときに更新されません。作成されると、domの変更に関係なく同じままです。
javascriptのコレクションから要素を追加または削除できますか?コレクションは読み取り専用です。ただし、コレクションが基づいているDOM要素を変更できます。これにより、ライブコレクションの場合、コレクションが順番に更新されます。ただし、array.from()またはスプレッドオペレーターを使用してコレクションを配列に変換し、結果の配列でforeachを使用できます。
以上がコレクションは配列ではありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。