indexOf()简介
indexOf()是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。
- 如果查询到返回索引,反之返回-1(固定用法)
- 因为indexOf()在不同类型使用的时候可能有细节性的注意点
- 这里我们对不同数据类型使用IndexOf的场景进行讨论(其实就是string和array)
String类型使用indexOf()
var s = '12233';
console.log(s.indexOf(1)); //0
console.log(s.indexOf('1')); //0
console.log('----------------------------');
2
3
4
相信大家已经发现特点,也就是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
2
3
4
可以看到array的indexOf()是不会进行隐式类型转换的,也就是说Array.prototype.indexOf()底层代码在实现的时候使用的是强等于=== 严格比较,JavaScript == 与 === 区别。