近来项目碰到一个小题目代码我会简化成小例子展现给人人。
用心看到最后会有收成哈,基本踏实的童鞋能够直接跳到数组范例运用。
说到 indexOf 人人并不生疏,推断字符串是不是见谅子字符串时迥殊经常使用(正则不熟练同砚的利器)。
String 范例的运用
复习一下人人熟知的字符串用法,举个例子
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'
然后再实行。
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 变量针对差别数据是变化的时刻,怎么办呢?
第二种写法最为经常使用,但对照第三种写法长了一点。哈哈,实在都能够,代码洁癖的人喜好第三种
Array 范例的运用
人人提起精力,大boss来了。
数组要领人人再熟习不过了,却疏忽了数组有 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.indexOf(‘o’) 输出 -1 由于此要领不会在每个元素的基本上再次实行 indexOf 婚配。
arr.indexOf(‘2016’) 输出 1 由于此要领重新婚配直到婚配到时返回第一个数组元素的下表,而不是返回悉数婚配的下标。
arr.indexOf(2016) 输出 -1 注重:这里不会做隐式范例转换。
既然坑已发明我们无妨寻根究底。去MDN官网一看终究。对此话题感兴趣的朋侪能够直接跳转到 Array.prototype.indexOf()
只想相识的朋侪下面给人人官方的 Description。
indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
一览无余,这里用的是严厉即是(===
)。人人做相似推断的时刻多注意。不要误认为数字会转成字符串,同理字符串也不会转换成数字。
总结
小知识点积聚,不作为深切议论的话题,因而这里没有诠释 indexOf() 的第二个参数,置信人人都晓得第二个参数的作用,不晓得的能够看这里String.prototype.indexOf(),然后连系上面数组的链接也看一下第二个参数。
文章出自 orange 的 个人博客 http://orangexc.xyz/