JavaScript 关联数组和 Array.indexOf 查找
JavaScript associative array and Array.indexOf lookup
应该有 100,000 个项目或更多对象数组,具有唯一 ID,例如:
myObj={
id:makeUniqueId()
, key:"bla"
, key2:"blabla"
}
我必须通过 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
获得更好性能的任何有效方法?
您得到的答复是,真正了解的唯一方法是自己进行基准测试,这是真的。然而,这个主题之前已经探索过:
In JS, which is faster: Object's "in" operator or Array's indexof?
底线是 typeof obj[id]
方法通常更快。
应该有 100,000 个项目或更多对象数组,具有唯一 ID,例如:
myObj={
id:makeUniqueId()
, key:"bla"
, key2:"blabla"
}
我必须通过 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
获得更好性能的任何有效方法?
您得到的答复是,真正了解的唯一方法是自己进行基准测试,这是真的。然而,这个主题之前已经探索过:
In JS, which is faster: Object's "in" operator or Array's indexof?
底线是 typeof obj[id]
方法通常更快。