javascript数组indexOf()方法参数问题

最近在看JavaScript高级程序设计,对于里面的indexOf()和lastIndexOf()两个方法不是很理解。

var a=[1,2,3,4,5,4,3,2,1]

console.log(a.indexOf(4)) //3
console.log(a.lastIndexOf(4)) //5
console.log(a.indexOf(4,4))//3
console.log(a.lastIndexOf(4,4))//3

已经了解的就是这两个方法第一个参数是指的数组里面的某一参数
所以 打印出来的是参数在数组所在的位置
那么问题来了:
1.当方法里面是两个参数的时候,第二个参数代表什么?
2.就是后面两个console为什么打印出来的是3?是依据什么?
3.Chrome上打印的结果和其它浏览器打印的结果不同 Chrome上是3,其它上面的是5
图片描述

图片描述

最后感谢大佬解答。

阅读 5.3k
5 个回答

1,两个参数第一个代表要检索的值(value),第二个值代表开始检索的位置(from);
2, indexOf() 和 lastIndexOf() 分别代表 检索数组中 检索值 首次最后 出现的位置;

第二个参数只影响开始检索的位置 并不影响检索值

即不管从哪里开始检索 检索值都是取改值在数组中 首次出现/最后出现 的下标

第二个参数是搜索的起始位置,注意在javascript中利用indexOf和lastIndexOf对数组搜索,即使设置了第二个参数,也不是说搜索到数组最后一个元素就停止,而是会循环搜索(相当于把前面的元素接到后面继续搜索),即无论如何都会对所有的元素搜索一遍。
我在多种浏览器中(IE、firefox和chrome中输出都是3、5、5、3,你怎么会是3、5、3、3?)

var a=[1,2,3,4,5,4,3,2,1]

console.log(a.indexOf(4)) //3
console.log(a.lastIndexOf(4)) //5
console.log(a.indexOf(4,4))//5,从位置4开始搜索,位置5元素就是4,搜索停止,故输出5
console.log(a.lastIndexOf(4,4))//3,从位置4开始搜索,先搜索位置5元素符合,最后搜索到位置3元素符合,故输出3

var a = [1, 2, 3, 4, 5, 4, 3, 2, 1];

console.log(a.indexOf(4)); //3
console.log(a.lastIndexOf(4)); //5
console.log(a.indexOf(4, 4));//5 哥,这个输出是**5**
console.log(a.lastIndexOf(4, 4));//3

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题