判断某个值是否在某数组内的方法如下:
1.jQuery.inArray( value, array [, fromIndex ] ) ------ fromIndex( 数组索引值,表示从哪里在开始查找。默认值是0 )
描述:在数组中查找指定值并返回它的索引(如果没有找到,则返回-1)
inArray: function( 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("b",["a","b","abc"]) ------ 1
$.inArray("c",["a","b","abc"]) ------ -1
2.循环操作
function in_array(elem, arr) { var i = 0, n = arr.length; for (;i < n;++i) if (arr[i] === elem) return true; return false; }
in_array("b",["a","b","abc"]) ------ true
in_array("c",["a","b","abc"]) ------ false
3.正则操作
Array.prototype.in_array=function(elem){ var r=new RegExp(','+elem+','); return r.test(','+this.join()+','); };
[1,"d","abd","c"].in_array("1") ------ true
[1,"d","abd","c"].in_array("ddd") ------ false
4.indexOf() ------ 存在兼容性,IE中Array并没有这个方法
function in_array(elem,arr){ var str=','+arr.join(",")+","; return str.indexOf(","+elem+",") != -1; }
in_array("b",["a","b","abc"]) ------ true
in_array("c",["a","b","abc"]) ------ false
关于function in_array()和Array.prototype.in_array=function(){}这俩种形式都可以,一个是函数,另一个是类方法的扩展。
如果大家有更好的方法或者其他方法,可以留言发表自己的看法。