jQuery.inArray 函数用查找某个value在数组中的位置( Search for a specified value within an array and return its index (or -1 if not found).)
该API解释及例子在这里
inArray: function( elem, array, i ) {
var len;
if ( array ) {
//indexOf :jQuery开始定义了 indexOf = Array.prototype.indexOf 如果有indexOf 方法则用改方法返回,核心为indexOf方法
if ( indexOf ) {
return indexOf.call( array, elem, i );
}
len = array.length;
/*
注意该条语句是给i赋值用的,猛的一看该语句可能产生混淆
首先判断i的值,i ? (i < 0 ? Math.max( 0, len + i ) : i ): 0 如果 i 未定义 或者i为0 则 把0赋值给i
如果i 定义了并且不为0 执行 i < 0 ? Math.max( 0, len + i ) : i
如果i 为负数,加上则为其加上数组长度,且其值不能小于0
*/
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays 这么判断主要是考虑数组下标不连续的情况注意学习这种方式 i in arry 的判断方式
if ( i in array && array[ i ] === elem ) {
return i;
}
}
}
return -1;
},