2016-11-23 11 views
-2

、:JavaScriptの連想配列とArray.indexOf検索

myObj={ 
    id:makeUniqueId() 
    , key:"bla" 
    , key2:"blabla" 
} 

と私はmyObj.idでユニークなIDを持つ広告のアレイでこれらのオブジェクトを配置する必要があります

if(typeof(objectsIdMap[ myObj.id ])=="undefined") { 
    objectsIdMap[ myObj.id ]={}; 
    objectsList.push(myObj); 
} 

objectsList.push(myObj)

は、これらの代替ガードを持っているようなので、私はどうなりますより良いパフォーマンスを持っていると、なぜ3210

if(objectsIdList.indexOf(myObj.id) < 0) { 
    objectsIdList.push(myObj.id); 
    objectsList.push(myObj); 
} 

SetまたはMapを使用してより良いパフォーマンスを達成する生産的な方法はありますか?

+1

*パフォーマンスが向上している理由は何ですか?*ベンチマークによって確実にわかります。 –

+0

だから、それはよい質問ではない?おそらく、2 downvotesがない理由を得ていないかわからない。 – loretoparisi

+0

私はそれがそうではないと恐れています。パフォーマンスアドバイスは多くのものに依存しており、一般的なケースでは非常に難しいものです。あなたのプラットフォームに関する特定の事柄は、正しく答えるべく何らかの試みを行うことができます。そのため、私は通常、「最良の」アプローチを推測しようとするのではなく、自分でコードをベンチマークすることを提案しています。 –

答えて

1

あなたが本当に知る唯一の方法は自分自身をベンチマークすることだという返事は本当です。一番下の行はtypeof obj[id]方法は通常、高速であるということである

In JS, which is faster: Object's "in" operator or Array's indexof?

:しかし、この主題は、前に検討されています。

+0

ありがとうございますこれは正解ですので、これは有効なSO質問またはより重複したものであることを確認し、そのようにマークします。 – loretoparisi