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;
        }
      }
    }
相關文章
相關標籤/搜索