jQuery.isArray 和jQuery.inArray

jQuery.isArray(obj) 是 jQuery 1.3 新增。测试对象是否为数组。  返回值:Boolean
参数 : objObject用于测试是否为数组的对象
示例 :检测是否为数组
jQuery 代码:
$("b").append( " + $.isArray([]) );结果:
<b>true</b>

jQuery.inArray(value, array) 确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )。返回值:Number
参数 :
valueAny 用于在数组中查找是否存在
arrayArray 待处理数组。

示例 : 查看对应元素的位置
jQuery 代码:
var arr = [ 4, "Pete", 8, "John" ];
jQuery.inArray("John", arr);  //3
jQuery.inArray(4, arr);  //0
jQuery.inArray("David", arr);  //-1

今天有朋友问了个问题,如下
var testarr=[{"a":"0"},{"b":"1"},{"c":"2"}];alert($.inArray({"a":"0"},testarr));  
  
说这个值总是返回-1;
第一眼,我没注意到,于是自己写了一段给他看。
var obj={'m':'1'};var arr=[obj,'1',2];alert($.inArray(obj,arr));

这个返回值正常。
后来才意识到,对象是引用类型的缘故。
引用类型的特性可以用一小段程序演示

复制代码 代码如下:
var obj={"a":0};var obj1={"a":0};
alert(obj==obj1);// false;---------------------
var obj={"a":0};
var obj1=obj;
alert(obj==obj1);
// true;

所以说inArray能判断简单对象,引用对象只能判断源对象,新建的不行。

其中的原理只是简单 ==

猜你喜欢

转载自happyqing.iteye.com/blog/1926140