String.prototype.indexof1 = function(sub) {
var index=0,//本数组游标,
valueLen = sub.length;//输入的数
sourceLen = this.length; //需要遍历的数组
//参数校验
if (Object.prototype.toString.call(sub) !== '[object String]') {
return new Error('array expected');
}
//b的长度比本数组长度长了就直接返回
if (sourceLen < valueLen) return -1;
while (index < sourceLen) {
//判断原数组中是否存在此输入数组
if (sourceLen - index < valueLen) return -1;
//遍历循环,如果不原数组和输入的数不相等,则跳出循环
for (var i = 0; i < valueLen; i++) {
//输入的数在数组中进行比对
if (this[index + i] !== sub[i]) break;
}
//判断跳出循环的i是否等于输入数的长度,在相等的情况下返回第一个相匹配的数
if (i === valueLen) return index;
index++;
}
}
//测试
a = "blueBlue"
console.log(a.indexof1("ue"));//2```
转载于:https://my.oschina.net/u/2929937/blog/1563087