我需要与Underscore的
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)(可选参数)的复杂过滤器函数.