1.indexOf()和lastIndexOf():indexOf()从头至尾搜索,而lastIndexOf()则反向搜索
2.搜索整个数组中具有给定值的元素,返回找到的 “第一个元素” 的 “索引” 或者如果没有找到就返回 “-1”。
3.indexOf()和lastIndexOf()方法不接收一个函数作为其参数。
4.第一个参数:需要搜索的值.
5.第二个参数是可选的:它指定数组中的一个索引,从那里开始搜索,如果省略该参数,indexOf()从头开始搜索,而lastIndexOf()从末尾开始搜索。
var a = [0, 1, 2, 1, 0];
console.log(a.indexOf(1)); // 1
console.log(a.lastIndexOf(1)); // 3
console.log(a.indexOf(3));
问:indexOf()只传一个参数时,返回值为找到的第一个元素的索引,那么该如何找到除了第一个元素以外的匹配值?
如下函数在一个数组中搜索指定的值并返回包含所有匹配数组索引的一个数组,它展示了如何运用indexOf()的第二个参数来查找除了第一个以外匹配的值。
在数组中查找所有出现的x,并返回一个包含匹配索引的数组:
function findall(a, x) {
var results = [], //将会返回的数组
len = a.length, //待搜索数组的长度
pos = 0; //开始搜索的位置
while(pos < len) { //循环搜索多个元素...
pos = a.indexOf(x, pos); //搜索
if(pos === -1) break; //未找到,就完成搜索
results.push(pos); //否则,在数组中存储索引
pos = pos + 1; //并从下一个位置开始搜索
}
return results; //返回包含索引的数组
}
var result = findall(a, 1);
console.log(result);
注意,字符串也有indexOf()和lastIndexOf()方法,它们和数组方法的功能类似。