js indexOf()方法
indexOf() 方法可返回数组中某个指定的元素位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
提示如果你想查找字符串最后出现的位置,请使用 lastIndexOf() 方法。
1、String 类型的使用
字符串用法,indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。举个例子
let str = 'orange';
str.indexOf('o'); //0
str.indexOf('n'); //3
str.indexOf('c'); //-1
这里 0 和 3 分别是 o 和 n 在字符串中出现的位置。起始下标是 0。而 -1 代表未匹配。
曾经有人问我为什么偏偏是 -1 不是 null 或者 undefined。你去问制定规则的人啊!一脸无奈。
大家看到这里感觉没什么亮点啊,别急接着再来一个例子
let numStr = '2016';
numStr.indexOf('2'); //0
numStr.indexOf(2); //0
看到这里有个小点就是 indexOf 会做简单的类型转换,把数字转换成字符串 '2' 然后再执行。
2、Number 类型的使用
大家可能会想 number 类型有没有 indexOf 方法因为会做隐式转换嘛!明确告诉大家没有,上例子
let num = 2016;
num.indexOf(2); //Uncaught TypeError: num.indexOf is not a function
非要对 number 类型使用 indexOf 方法嘞?那就转换成字符串咯,接着上例来写
//二逼青年的写法
num = '2016';
num.indexOf(2); //0
//普通青年的写法
num.toString().indexOf(2); //0
//文艺青年的写法
('' + num).indexOf(2); //0
第一种写法简单直接,对于已知的较短的数字也不是不可行。但是 num 变量针对不同数据是变化的时候,怎么办呢?
第二种写法最为常用,但对比第三种写法长了一点。哈哈,其实都可以,代码洁癖的人喜欢第三种 √ 。
3、array 类型数组使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!--注意src路径要对--> <script src="../js/jquery-1.11.3.min.js" type="text/javascript"></script> <script type="text/javascript"> arr = ['mfg', '2017', '2016']; //控制台输出0,查找到下标 console.log(arr.indexOf('mfg')); //控制台输出-1,因为此方法不会在每一个元素的基础上再次执行 indexOf 匹配 console.log(arr.indexOf('m')); //控制台输出1,查找到下标 console.log(arr.indexOf('2017')); //控制台输出-1,这里不会做隐式类型转换 console.log(arr.indexOf(2017)); </script> </body> </html>
总结:
String:indexOf 会将’0’做类型转换,转换为0。
Number:没有indexOf 方法。需要将数字类型转换为字符串。方法有三种。直接字符串、字符串toString、字符串拼接。
Array:数组同样有indexOf 方法,只不过做类型判断时,使用的严格相等(strict equality),也就是 === 。
原文链接:https://www.qiquanji.com/post/7008.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。