我在对象数组中进行非常频繁的搜索,并且一直在使用jQuery.inArray().然而,我有速度和内存问题,根据我的分析器最常用的方法之一是jQuery.inArray().这个词在街上有什么表现?我应该切换到一个简单的循环?
我的具体功能是:
function findPoint(point,list)
{
var l = list.map(function anonMapToId(p) { return p.id });
var found = jQuery.inArray(point.id,l);
return found;
}
可能是list.map()更怪吗?
解决方法
在内部的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;
}
在实现JavaScript 1.6的浏览器中引入了Array.prototype.indexOf方法,它将成为ECMAScript 5标准的一部分.
本地实现方式比非本地实现方式更快.