$.inArray()函數用於在數組中搜索指定的值,並返回其索引值。若是數組中不存在該值,則返回-1;javascript
$.inArray(value,array) --value是要查找的值,array是被查找的數組。java
使用$.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":"張三"}的引用;ip
(2)你們都知道javascript是一種弱類型語言,對於數字類型和字符類型,能夠隨意切換(例如:1+""="1");因此有如下一段代碼:字符串
$(function () { var arr = [1, 2, 3, 4, 5]; var a = 2; alert($.inArray(a, arr)); });
這段代碼返回正常值爲1;io
$(function () { var arr = [1, 2, 3, 4, 5]; var a = "2"; alert($.inArray(a, arr)); });
當把a的值改成字符串2返回值就出錯了爲-1;因此各位在使用這個$.inArray()方法時,必定要確保數據類型是同樣的,雖然javascript是一種弱類型語言;function