简单谈谈JS数组中的indexOf方法

简单谈谈JS数组中的indexOf方法

最近工作中遇到一个小问题。我将把这篇文章的代码简化成一个小例子给你看。下面详细介绍一下JS数组中的indexOf方法,用心看看最后会不会有收获。有需要的朋友来看看吧。

前言

相信大家对indexOf并不陌生,在判断一个字符串是否包含子串时尤其常用,对于正规不熟练的同学来说是一个利器。本文以最近的一个问题为例,讨论indexOf方法。本文是小知识点的积累,不是作为话题进行深入讨论,所以这里不解释indexOf()的第二个参数。相信大家都知道第二个参数的作用。

String 类型的使用

回顾众所周知的字符串用法,例如

设str= orange

str . index of( o );//0

str . index of( n );//3

str . index of( c );//-1

这里0和3分别是O和N在字符串中出现的位置。起始下标是0。-1表示不匹配。

曾经有人问我为什么是-1而不是null或者undefined。去问制定规则的人!一脸的无奈。

大家都觉得这里没什么亮点。别急,我们再举个例子。

let numStr= 2016

numstr . index of( 2 );//0

numstr . index of(2);//0

这里有个小点,就是indexOf可以做简单的类型转换,把数字转换成字符串‘2’然后执行。

Number 类型的使用

你可能想知道number类型是否有indexOf方法,因为它可以做隐式转换!明确告诉大家,上面的例子。

设num=2016

num . index of(2);//未捕获的类型错误:num.indexOf不是函数

是否要对数字类型使用indexOf方法?然后转换成一个字符串,再写成前面的例子。

//白痴青年的写作

num= 2016

num . index of(2);//0

//普通青年的写作

num.toString()。index of(2);//0

//文艺青年写作

(数字)。index of(2);//0

第一种写法简单直接,对于已知的较短的数也不是不可以。但是当num变量针对不同的数据发生变化时,该怎么办?

第二种写法最常用,但比第三种写法长一点。哈哈,其实还可以。代码纯粹主义者喜欢第三种。

Array 类型的使用

大家打起精神来。大老板来了。

数组的方法大家都很熟悉,但是忽略了数组有indexOf(我个人感觉)的方法。

不练就瞎说。你遇到过哪些问题?你的注意点在哪里?

let arr=[橙, 2016 , 2016 ];

arr . index of( orange );//0

arr . index of( o );//-1

arr . index of( 2016 );//1

arr . index of(2016);//-1

没有这里举例那么详细。四个用例足以说明问题。

Arr.indexOf(orange )输出0,因为 orange 是数组的第0个元素,匹配并返回下标。

Arr.indexOf (o )输出-1,因为此方法不会在每个元素的基础上再次执行indexOf匹配。

Arr.indexOf(2016 )输出1,因为此方法返回从匹配开始到结束的第一个数组元素的下表,而不是返回所有匹配的下标。

Arr.indexOf(2016) Output -1注意:这里不做隐式类型转换。

既然坑已经找到了,我们不妨一探究竟。去MDN官网看看。对这个话题感兴趣的朋友可以直接跳转到Array.prototype.indexOf()

只是想知道下面的朋友给你官方的描述。

indexOf()使用严格相等(与===或triple-equals运算符使用的方法相同)将searchElement与数组的元素进行比较。

一看,这里用的是严格等于(===)。做类似判断的时候多加注意。不要把数字错当成字符串,就像字符串不会转换成数字一样。

总结

这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助。有问题可以留言交流。

简单谈谈JS数组中的indexOf方法