前言
这两天我在家帮朋友做项目。 项目使用数组的indexOf方法找到了文章。 感觉非常好。 顺便整理一下,以免失去链接。
说到索引of,您可能不太熟悉,它在确定字符串是否包含子字符串时特别常用。 正则不习惯同学的利器。 本文通过实例介绍了最近遇到的问题,并介绍了索引关闭方法。 本论文是小知识的积累,不是深入讨论的话题,所以这里没有说明indexOf ()的第二个参数,但大家都知道第二个参数的作用。
使用字符串类型
复习熟悉的字符串用法,举个例子
let str='orange ';
str.indexof('o ); //0
str.indexof('n ); //3
str.indexof('c ); //-1
其中0和3分别是o和n出现在字符串中的位置。 下标为0。 -1意味着不一致。
有人曾问我为什么偏偏-1不是空的或未定义的。 请问制定规则的人。 一脸无奈的表情。
看这里也没有什么亮点啊。 请不要着急。 让我再举一个例子
let numStr='2016 ';
numstr.indexof('2); //0
numstr.indexof(2; //0
现在,从一个小点来看,indexOf会进行简单的类型转换,将数字转换为字符串‘2’,然后执行。
使用编号类型
因为number类型可能不包含索引of方法,但可以进行隐式转换。 明确告诉我没有,上面的例子
let num=2016;
num.indexof(2; //uncaught typeerror 3360 num.indexofisnotafunction
请不要在number类型中使用indexOf方法? 那个会转换成字符串呢。 接着上面的例子写
(二逼青年的写法
num='2016 ';
num.indexof(2; //0
//普通青年的写法
num.toString ().indexOf(2) ) 2; //0
文艺青年的写法
(' num ) .索引of (2) ) 2; //0
第一种写法简单直接,对于已知的短数字也不是不可能。 但是,如果num变量针对不同的数据发生变化,该怎么办?
第二种写法是最常用的,但比第三种写法长了一点。 哈哈,其实哪个都可以,但是代码清高的人喜欢第三个。
使用阵列类型
大家打起精神来,ggdyj来了。
数组方法已经很熟悉了,但忽略了数组中有一个名为indexOf的方法(就个人而言)。
不是胡说,如果有什么问题,注意点在哪里?
let arr=['orange ',' 2016 ',' 2016'];
ARR.indexof(orange ); //0
ARR.indexof('o ); //-1
ARR.indexof(2016 ); //1
ARR.indexof(2016; //-1
这里没有把例子划分得那么细,四个例子足以说明问题。
由于` arr.indexof(‘orange )输出0 ) orange )是数组的第0个元素,因此它将匹配并返回下标。
` arr.index of (‘o’)输出-1因为此方法不会基于每个元素再次执行索引of匹配。
` arr.indexof(2016 ) )输出1此方法返回第一个数组元素下的表直到匹配,因此不是返回所有匹配的下标。
` arr.indexof(2016 )输出-1注意:此处不执行隐式类型转换。
既然发现了漏洞,我们就可以刨根问底了。 去MDN官网看看吧。 对这个话题感兴趣的朋友,请直接跳到Array.prototype.indexOf ()。
给想知道的朋友下面官方的说明。
索引of (comparessearchelementtoelementsofthearrayusingstrictequality (thesamemethodusedbythe==or triple-equalsoperality )
在这里,一眼就能看到使用了严格等于(==)。 大家做出相似的判断时请小心。 请不要误以为数字会转换成字符串。 同样,字符串也不会转换为数字。
总结
以上是这篇文章的所有内容。 希望这篇文章的内容能给大家的学习和工作带来一定的帮助。 如果有疑问的话请用信息交流。
String:indexOf对’0’进行类型转换,然后将其转换为0。
number :没有索引of方法。 必须将数字类型转换为字符串。 方法有三种。 直接字符串、字符串toString和字符串的拼接。
Array :数组也有类似的索引of方法。 但是,在确定类型时使用“严格质量”(strict equality ),即==。