假设有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 );
}
哪个有更好的表现?为什么?使用Set
或Map
?
答案 0 :(得分:1)
你得到的答复是真正知道的唯一方法是自己进行基准测试是真的。但是,之前已经探讨过这个问题:
In JS, which is faster: Object's "in" operator or Array's indexof?
底线是typeof obj[id]
方法通常更快。