大家都知道javascript是一种弱类型语言,对于数字类型和字符类型,可以随意切换(例如:1+""="1"),下面开始说主题:
jquery的一个方法inArray(ele, array)是判断ele是否在array中存在,返回值是该元素第一次出现在数组array中的下标,没有时返回-1。
例如:
var a = 1; var array = [1,2,3]; var b = $.inArray(a, array);
此时,b等于0。
但是,如果此时将a="1";,那么,再执行一下:
b = $.inArray(a, array);
此时,b等于-1。这将带来一个问题,因为有的人可能只希望得到这样的判断:"1" == 1,该逻辑表达式实在在javascript环境中,返回的是true,但是,在inArray中,返回的确实false,所以,如果一个数组中,存放的是非对象变量,尤其是对数字进行判断时,最好采用原始的判断方法。
也可以采用正则表达式来验证如下:
var a = 1; var reg = new RegExp("(^"+a+",)|(^"+a+"$)|(,"+a+",)|(,"+a+"$)"); var array = [1,2,3,4]; reg.test(array.toString());// true a = "1"; reg.test(array.toString());// true
好了,就说这么多~~