我需要与Under
score的
find基本相同的
功能,但是使用元素的索引作为结果(而不是元素本身).
据我所知,Underscore的indexOf寻找一个值并且不起作用.与jQuery的inArray功能相同的问题.
我想出了以下实现,但我不确定它是最有效的:
function myIndexOf(arr,filter) {
var index;
$.each(arr,function (i,elt) { if (filter(elt)) { index=i; return false; } });
return index;
}
这是一个简单的实现:
function find(collection,filter) {
for (var i = 0; i < collection.length; i++) {
if(filter(collection[i],i,collection)) return i;
}
return -1;
}
它将适用于具有length属性的任何可索引对象,您可以传递一个过滤器(element,index,collection)(可选参数)的复杂过滤器函数.