indexOf遇到问题
indexOf是检测‘字符’是否存在于一个字符串中。不存在返回 -1。存在返回对应的下标
var str = 'hello world'; str.indexOf('hello') // 返回的是 下标0 str.indexOf('l') //返回的是2 , 它找到第一个相等的字符时直接返回下标,后面就不查找了。
上面是字符串的 indexOf 。 看看数组如何用 indexOf
var arr = [1,2,3,4,5,6]; arr.indexOf(1) // 返回下标 0
这不和字符串一样的用法吗??? 。 先别急,看看下面的例子
var arr = [1,'2',3,'4','5',6]; arr.indexOf(1) //返回下标 0 ,没有问题 arr.indexOf(2) //返回 -1 arr.indexOf(3) //返回下标 2 arr.indexOf('5') //返回下标 4 arr.indexOf(5) //返回 -1
为什么 arr.indexOf(2) 和 arr.indexOf(5) 返回 -1
因为 indexOf的比较不是 == 而是 === 。
=== 是比较 类型、值相不相等。2是number 类型。而arr里面的 ‘2’ 是字符串类型的。。 没匹配到,所以返回-1 。
我们用 indexOf 时注意查看 类型是否相同。类型不相同就返回 -1