我应该使用jQuery.inArray()吗?

pr1*_*001 10 javascript arrays jquery map

我在对象数组中进行非常频繁的搜索,并且一直在使用jQuery.inArray().但是,我有速度和内存问题,根据我的探查器,最常调用的方法之一是jQuery.inArray().街上有什么关于它的表现的话?我应该切换到简单的for循环吗?

我的具体功能是:

function findPoint(point, list)
{
  var l = list.map(function anonMapToId(p) { return p.id });
  var found = jQuery.inArray(point.id, l);
  return found;
}
Run Code Online (Sandbox Code Playgroud)

也许list.map()是更多的责任?

CMS*_*CMS 15

内部很好地inArray创建一个简单的循环,我建议你检查是否有本机Array.prototype.indexOf实现并使用它而不是inArray如果可用:

function findPoint(point, list) {
  var l = list.map(function anonMapToId(p) { return p.id });
  var found = ('indexOf' in Array.prototype) ? l.indexOf(point.id)
                                             : jQuery.inArray(point.id, l);
  return found;
}
Run Code Online (Sandbox Code Playgroud)

Array.prototype.indexOf方法已在实现JavaScript 1.6的浏览器中引入,它将成为ECMAScript 5标准的一部分.

本地实现的方式比非原生得更快.

  • jQuery已经自动执行此操作.http://forum.jquery.com/topic/inarray(这是对帖子的第一个评论)另外,IE8没有实现Array.prototype.indexOf. (11认同)
  • 'inArray'听起来更像是返回一个布尔值,但事实并非如此.给下一个开发者一个忙,并使用'indexOf'. (3认同)