孤陋寡闻了,一直以为indexOf()方法只是用来处理字符串,昨天面试才知道,原来还可以处理数组,涨知识了~。
indexOf()方法返回某个值在数组中的第一个匹配项的索引。
用法:array1.indexOf(searchElement,fromIndex)。
参数 | 定义 |
array1 | 必需。 一个数组对象。 |
searchElement | 必需。 要在 array1 中定位的值。 |
fromIndex | 可选。 用于开始搜索的数组索引。 如果省略 fromIndex,则从索引 0 处开始搜索。 |
返回值
数组中的 searchElement 的第一个匹配项的索引;如果未找到 searchElement,则为 -1。
备注
indexOf 方法在数组中搜索指定的值。 该方法返回第一个匹配项的索引;如果找不到指定的值,则为 -1。
按升序索引顺序执行搜索。
数组元素将与 searchElement 值进行全等比较,与 === 运算符类似。 有关更多信息,请参见比较运算符 (JavaScript)。
可选 fromIndex 参数指定用于开始搜索的数组索引。 如果 fromIndex 大于或等于数组长度,则返回 -1。 如果 fromIndex 为负,则搜索从数组长度加上 fromIndex 的位置处开始。
示例
下面的示例阐释了 indexOf 方法的用法。
<script type='text/javascript"> // Create an array. (The elements start at index 0.) var ar = ["ab", "cd", "ef", "ab", "cd"]; // Determine the first location of "cd". document.write(ar.indexOf("cd") + "<br/>"); // Output: 1 // Find "cd" starting at index 2. document.write(ar.indexOf("cd", 2) + "<br/>"); // Output: 4 // Find "gh" (which is not found). document.write (ar.indexOf("gh")+ "<br/>"); // Output: -1 // Find "ab" with a fromIndex argument of -2. // The search starts at index 3, which is the array length plus -2. document.write (ar.indexOf("ab", -2) + "<br/>"); // Output: 3 </script>
注意:IE9之前的浏览器不支持此用法
为了兼容IE9以前的浏览器,可以在IE9以前的浏览器原型上添加这个方法。
<script type="text/javascript"> if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion .split(";")[1].replace(/[ ]/g,"")=="MSIE8.0"||"MSIE7.0"||"MSIE6.0"){ Array.prototype.indexOf=function(el){ for(var i=0;i<this.length;i++){ if(this[i]===el){ return i; } } return -1; } } var arr=[1,2,34,5,6,7]; var arrChild=34; console.log(arr.indexOf(arrChild)); </script>