js中字符串方法indexof的实现

 

function newIndexOf(pStr, cStr, n) {
      // n为起始位置
      let i; // 循环变量
      let len1 = pStr.length; // 父串长度
      let len2 = cStr.length; // 子串长度

      if (n == undefined || n == null || n == -1) {
        i = 0;
      } else if (n > len1 - 1) { // 如果起始位置大于父串最后一位,返回-1,不存在
        return -1;
      } else { // 如果不存在上述情况,从第n位开始
        i = n;
      }

      if (len2 > len1) { // 如果子串长度大于父串,那么肯定不存在,返回-1
        return -1;
      } else if (len2 == len1) { // 如果相等,那就直接对比两个字符串是否相等
        if (cStr === pStr) { // 如果内容相等,那么就是从第一位开始的
          return 0;
        } else { // 如果长度不相等,那么返回-1
          return -1;
        }
      } else {
        let tempStr = '';
        while (i < len1) {
          // 截取父串,起始位置为i,每次长度为子串长度
          tempStr = pStr.substr(i, len2);
          if (cStr === tempStr) {
            return i; // 返回字符串第一次出现的位置
          }
          i++; 
        }

        if (i == len1) { // 直到父元素的最后一位还没有出现相等,那么就是不存在返回-1
          return -1;
        }
      }
    }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值