4

このようなオブジェクトを作成する場合:

building[45] = new Object();        
building[45].name = myName; 
building[45].price = parseInt(myPrice);

building[128] = new Object();       
building[128].name = myName;    
building[128].price = parseInt(myPrice);

関数で使用したい場合は、一時変数に割り当てて、ブラウザーがプロパティbuilding[128]を見つけるためにすべてのオブジェクトを反復処理する必要がないようにする方がよいでしょうか。building[128]

例:

var theID = 128;
var temp = building[theID]; //temp.name & temp.price

または、直接使用building[theID].namebuilding[theID].priceますか?

それらの検索方法に違いはありますか?

4

2 に答える 2

4

配列アクセスは定数時間操作です(Big-O表記では、これはですO(1))。つまり、ブラウザはにアクセスする前に127を超えるアイテムを繰り返す必要はありませbuilding[128]

その場合でも、配列項目を変数に格納することをお勧めします。これを行う主な理由は、JavaScriptミニファイプログラムが変数の名前を、のような短い名前に変更できるaため、プロパティへのアクセスなどが可能a.nameになるためです。これにより、あちこちで数バイトが節約され、大規模な場合、合計バイトの節約は重要です。

JavaScript配列はJavaScriptオブジェクトの特殊な形式であり、配列インデックスは実際には整数であるプロパティ名にすぎません。 JavaScript:決定的なガイド、David Flanagan

Flanaganの配列の定義を使用して、配列アイテムにそのインデックスでアクセスするたびに、効果的に2段階のプロセスを開始します。配列オブジェクトにアクセスしてから、プロパティ名(インデックス)で値を検索します。配列項目を変数に保存することにより、メモリ内の値を確認するのと同じくらい簡単にアクセスできます。

于 2013-03-27T03:41:03.030 に答える
0

または、次のようにビルドすることもできます。

building[45] = {
    name: myName,
    price: parseInt(myPrice, 10)
};

building[128] = {
    name: myName,
    price: parseInt(myPrice, 10)
};

編集:ああ、あなたの質問は私がそれを読む方法とは違うようです。ごめん。役に立つかもしれないので、この答えをここに残しておきます。

于 2013-03-27T04:02:51.620 に答える