JavaScript关联数组和Array.indexOf查找

时间:2016-11-23 16:24:38

标签: javascript arrays associative-array

假设有100,000个或更多项目的对象,具有唯一的ID,如:

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

我必须将这些对象放在ad myObj.id中带有唯一ID的广告数组中,所以我会这样做

objectsList.push( myObj )

有那些替代警卫:

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

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

哪个有更好的表现?为什么?使用SetMap

获得更好表现的任何有效方法

1 个答案:

答案 0 :(得分:1)

你得到的答复是真正知道的唯一方法是自己进行基准测试是真的。但是,之前已经探讨过这个问题:

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

底线是typeof obj[id]方法通常更快。