JS 数组位置方法 indexOf()和lastIndexOf()的理解
var numbers = [1,3,5,7,9,4,3,2,1];
console.log(numbers.indexOf(5)); //从数组的0位开始查找 5 位于数组里面的位置 输出2
首先 理解一下 indexOf() 是从左往右查 参数“5” 位于数组的下标 所以这里打印出 2
再看
var numArr = ["hehe","sss","ddada","haha","xixi"];
console.log(numArr.lastIndexOf("dadad")) dadad b不存在 输出-1
console.log(numArr.lastIndexOf("haha")) 输出3
为什么看起来好像跟indexOf()没什么区别呢?? 我在修改一下
var numArr = ["hehe","sss","ddada","haha","haha","xixi"]; 此时 haha有两个
我们在打印看看
console.log(numArr.lastIndexOf("haha")) 输出4
这时输出的就是4 为什么呢?
因为 lastIndexOf()是找某个字符串在数组里最后出现的哪一个的位置。
// var arr = [1,2,3,4,5,6,7,1]
// console.log(arr.lastIndexOf(7));//6 下标为6的位置
// lastIndexOf 是从右向左查某个指定的字符串在字符串中最后一次出现的位置(也就是从后往前查)
var arr = [1,2,3,4,5,6,7,1]
console.log(arr.lastIndexOf(7,4));//6 下标为6的位置
//4为查找的索引(也就是下标到4) 如数组里1,2,3,4,5 因为7不在该索引里 所以打印-1
再看!!!
// var arr = [1,2,3,4,5,5,6,7,1];
// console.log(arr.indexOf(5));//4 下标为4的位置
// console.log(arr.lastIndexOf(5));//5
// 这个时候两个返回的索引值就不同了
// because: 前面已经说了indexOf是从前向后查 而lastIndexOf是从后向前查 但是二者返回索引都是从前开始数数和计算的