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()方法,它們和數組方法的功能類似。