大家好,又见面了,我是你们的朋友全栈君。
indexOf()
是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。
如果查询到返回索引,反之返回-1(固定用法);
因为indexOf()在不同类型使用的时候可能有细节性的注意点;
这里我们对不同数据类型使用IndexOf的场景进行讨论(其实就是string和array)
注:(暂不讨论两个参数时(第二个参数为查询的起始位置),以及lastIndexOf()
)
String类型使用indexOf(); String中的indexOf方法 (话不多说直接上代码,不跟你多BB)
var s = '12345';
console.log(s.indexOf(1)); //0
console.log(s.indexOf('1')); //0
console.log('----------------------------');
相信大家已经发现特点,也就是string的IndexOf()是对数据进行了隐式类型转换的,如果参数是数值它会转换为字符来进行查询然后返回索引,本质原因是什么呢,那就是 我们js底层代码中String.prototype.indexOf()
使用的是==
进行比较判断;
Number类型的IndexOf()
醒醒,Number
类型哪来的indexOf()
方法,会直接报错的好吗,
如果想对数值类型的进行查询索引,可以将数值转换为字符再进行查询,方法有很多:
– String()
– .toString()
– 与空字符’’进行+
拼接
Array类型的indexOf()
var a = [1,2,3,'4','5','6'];
console.log(a.indexOf(3)); //2
console.log(a.indexOf('4')); //3
console.log(a.indexOf(4)); //-1
可以看到array
的indexOf()
是不会进行隐式类型转换的,也就是说Array.prototype.indexOf()
底层代码在实现的时候使用的是强等于===
严格比较;
总结
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158304.html原文链接:https://javaforall.cn