配列は JavaScript によって提供される標準のコレクションです。配列に加えて、その中の要素を追加 (プッシュ) および削除 (シフト) することもできます。 、他にもコレクションはありますか?
JavaScript の言語機能により、一般的なオブジェクトに対してプロパティを動的に追加および削除できます。したがって、Object は JS の特別なコレクションとみなすこともできます。 Array と Object の特徴を比較してみましょう:
Array:
New: var ary = new Array(); または var ary = [];
Add: ary.push(value);
Delete: delete ary[ n];
Traversal: for ( var i=0 ; i
Object:
New: var obj = new Object() または var obj = {};
Add: obj[key] = value; (key is string)
Delete: delete obj[key];
Traverse: for (var key in obj) obj[key];
上から比較すると、オブジェクトをコレクションとして使用できることがわかります。ポップアップ ウィンドウを使用して無限の Web ページ メニューを作成する場合 (3)、Eric によって実装された __MenuCache__ を導入しました。これもシミュレートされたコレクション オブジェクトです。
配列で指定された値を取得したい場合は、配列全体を走査する必要があります:
var keyword = ; for ( var i=0 ; i < ary.length ; ++i ) { if ( ary[i] == keyword ) { // todo } }
そして、オブジェクトで指定されたキーを持つエントリを取得するには、この機能を使用するだけです:
var key = ''; var value = obj[key]; // todo
Object Itを使用すると、一意の文字列コレクションを効率的に取得できます。配列の走査時間は O(n) ですが、オブジェクトの走査時間は O(1) です。 10,000 件のコレクションの取得コストはわずか数十ミリ秒ですが、1,000*1,000 件以上の取得となると、Object を使用する利点がすぐにわかります。その前に、100 個の一意の文字を 1000 個の文字列配列にマッピングするマッピングを実行しました。これには 25 ~ 30 秒かかりました。その後、 for traversal をオブジェクトのシミュレートされたコレクションのメンバー参照に変更すると、同じ量のデータがマッピングされました。所要時間はわずか 1.7 ~ 2 秒です!!!
コレクションの走査効率 (高から低まで): var value = obj[key] for ( ; ; ) > for ( in )。最も効率が低いのは for(in) です。コレクションが大きすぎる場合は、for(in) を使用しないでください。
上記は、JavaScript の配列、コレクション、効率性に関する Javascript チュートリアルの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。