indexOf()和lastIndexOf()

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()方法,它们和数组方法的功能类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值