我在对象数组中进行非常频繁的搜索,并且一直在使用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标准的一部分.
本地实现方式比非本地实现方式更快.