$.inArray()函數用於在數組中搜索指定的值,並返回其索引值。如果數組中不存在該值,則返回-1;
$.inArray(value,array) --value是要查找的值,array是被查找的數組。
使用$.inArray()方法必須注意的點,否則會掉坑
(1)看如下代碼:
$(function () { var arr=[{"name":"張三"},{"name":"李四"},{"name":"王五"}]; alert($.inArray({"name":"張三"}, arr)); });
上面這段代碼不仔細分析怎么看都沒有錯,但是返回值是-1。下面來分析下原因發現:
錯誤的原因是{"name":"張三"}和{"name":"張三"}是兩個不同的引用;所以在arr數組里面找不到{"name":"張三"}這個對象;代碼如果這樣改就可以了
$(function () { var obj = { "name": "張三" }; var arr = [{ "name": "李四" }, obj, { "name": "王五"}]; alert($.inArray(obj, arr)); });
這段代碼返回的就是1;返回值正常,這時的obj是{"name":"張三"}的引用;
(2)大家都知道javascript是一種弱類型語言,對於數字類型和字符類型,可以隨意切換(例如:1+""="1");所以有以下一段代碼:
$(function () { var arr = [1, 2, 3, 4, 5];
var a = 2;
alert($.inArray(a, arr)); });
這段代碼返回正常值為1;
$(function () { var arr = [1, 2, 3, 4, 5]; var a = "2"; alert($.inArray(a, arr)); });
當把a的值改為字符串2返回值就出錯了為-1;所以各位在使用這個$.inArray()方法時,一定要確保數據類型是一樣的,雖然javascript是一種弱類型語言;
