首页 期权学习期权知识正文

js indexOf()方法

xiaojiucai 期权知识 2020-08-18 428 0

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

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论