2010-12-08 8 views
2

現在、配列内のものを追跡していますが、配列内にあるもの以外は何も知る必要はありません。たとえば、私はforSale配列を持っているかもしれませんし、配列の中にあるすべてのitemIDを持っています。"値"を持つオブジェクトを作成することには欠点があります: "

今のところうまく動作しますが、何らかのテストを行っていて、object.hasOwnProperty(x)が吹き飛んでいるようです(私は彼らが完全に異なっていることは知っていますが、他の方法はわかりません配列に値があるかどうかをテストします)。これは、なぜ私は、その後saleObject.hasOwnProperty('someId')を呼び出すと、そのオブジェクトが販売していることを知ることができる

var saleObject = { 
    "someId" : "", 
    "someOtherId" : "" 
}; 

のようなものを作成しない、思考に私を得ました。私はこれに欠点はないと思うが、それが私がここにいる理由だ。これに何か悪いことはありますか?

+1

プレーンオブジェクトで作業していることがわかっている場合は、 'in'キーワードを使用することもできます:' 'someOtherId 'in saleObject === true' – s4y

+0

あなたはリストアイテム、私は配列があなたにはるかに良く合うと思います。 – instantsetsuna

答えて

2

新しい構造を受け入れるように依存コードを変更できると仮定しても問題はありません。速度の違いは、オブジェクトがキーを持っているかどうかを判断するためにバイナリサーチを行うことができますが、indexOfは配列のすべての値をチェックする必要があるからです。

2

いいえJavaScriptオブジェクトは拡張された連想配列のみであるというオブジェクトの有効な使用です。

また、Array.indexOfは現時点では標準のJavaScriptメソッドではありません。また、あなたはそれに頼ることはできません。 ECMA-262版5でのみ導入されました。

関連する問題