淘先锋技术网

首页 1 2 3 4 5 6 7

jQuery中提供了inArray()函数来判断一个值是否在数组中存在,那么它的源码是什么样的呢?

jQuery.inArray = function( elem, arr, i ) {
return arr == null ? -1 : indexOf.call( arr, elem, i );
};

可以看到,inArray()函数的实现是调用了JavaScript原生的indexOf()方法来进行判断。

但是一些老版本的浏览器可能不支持indexOf()方法,这时候就需要重新写一个类似于indexOf()的方法,如下:

function inArray( elem, arr, i ) {
var len;
if ( arr ) {
if ( indexOf ) {
return indexOf.call( arr, elem, i );
}
len = arr.length;
i = i ? i< 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i< len; i++ ) {
// Skip accessing in sparse arrays
if ( i in arr && arr[ i ] === elem ) {
return i;
}
}
}
return -1;
}

这段代码实现的方法是遍历整个数组,通过判断元素是否在数组中存在来返回相应的下标。

总的来说,inArray()函数是一个非常有用和方便的函数,可以用来判断一个数组中是否存在某个元素。