【问题标题】:JavaScript associative array and Array.indexOf lookup [duplicate]JavaScript 关联数组和 Array.indexOf 查找
【发布时间】:2016-11-23 16:24:37
【问题描述】:

假设有 100,000 个或更多的对象数组,具有唯一 ID,例如:

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

我必须将这些对象放在具有唯一 ID 的广告数组中 myObj.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 获得更好性能的任何有效方法?

【问题讨论】:

  • 哪个性能更好,为什么?基准测试可以确定。
  • 所以这不是一个很好的问题吗?不确定也许不是,2 次反对但不明白原因。
  • 恐怕不是。性能建议取决于很多事情,在一般情况下很难做到正确。关于您的平台的细节可以使任何尝试正确回答没有实际意义。这就是为什么我通常建议自己对代码进行基准测试,而不是试图猜测(很可能是错误的)“最佳”方法。
  • 好吧,但是 JavaScript ArrayObject.indexOf 使用/性能呢?这个和平台无关吧?

标签: javascript arrays associative-array


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢这是正确的答案,所以这也证实了这是一个有效的 SO 问题或更好的重复问题,我会这样标记。
猜你喜欢
  • 2011-08-18
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2016-11-25
  • 2011-08-15
  • 2015-11-20
  • 1970-01-01
相关资源
最近更新 更多