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()函数是一个非常有用和方便的函数,可以用来判断一个数组中是否存在某个元素。