昨天秋招笔试遇到的一道题,记录下来给大家参考,如果没写对,还请大家指正,前端小白在此谢过各位.
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
网友评论