原生JS实现字符串indexOf方法(使用基本遍历法)

昨天秋招笔试遇到的一道题,记录下来给大家参考,如果没写对,还请大家指正,前端小白在此谢过各位.

String.prototype.myIndexOf = function(str,n) {
        let len1 = this.length;
        let len2 = str.length;
        let i = n || 0;
        //this => 原字符串
        //str => 目标字符串
        for(i; i < len1; i++) {
            if(this[i] == str[0]){  //如果this第i个字符与str的第一个字符相同
                for(j = 0; j < len2; j++) {  //在i的基础上,接着循环遍历str中的每一个字符
                    if(str[j] !== this[i+j]){
                        if(i == len1-1){
                           return -1;
                        }else{  //如果当前字符与原字符不符合,则需要往下继续寻找下一个首字母吻合的位置
                            break;
                        }
                    }else {   //如果全部字符都对应上,返回首字符对应的位置,否则继续寻找
                        if(j == len2-1) {
                            return i;
                        }else{
                            continue;
                        }
                    }
                }
            }else{
                if(i == len1 - 1){
                    return -1;
                }
            }
        }
    }
    let a = "acanacd".myIndexOf("acd");
    let c = "asddffrg".myIndexOf("frg");
    let b = "acadecamic".myIndexOf("cai");
    let d = "acadecamic".myIndexOf("ca",3);
    console.log(a);//4
    console.log(b);//-1
    console.log(c);//5
    console.log(d);//5

你可能感兴趣的:(原生JS实现字符串indexOf方法(使用基本遍历法))