js手写indexOf
时间: 2023-10-31 11:59:44 浏览: 131
JavaScript的indexOf方法是用于查找字符串中指定子串第一次出现的位置的方法。在JavaScript中,为了实现字符串的indexOf方法,可以使用Polyfill来手动实现。
下面是一个手写的indexOf方法的示例代码:
```javascript
if (!String.prototype.indexOf) {
String.prototype.indexOf = function(searchString, fromIndex) {
let i;
if (typeof searchString == 'undefined') {
searchString = 'undefined';
}
searchString = String(searchString);
let flen = this.length;
let zlen = searchString.length;
fromIndex = Number(fromIndex) || 0;
if (isNaN(fromIndex) || fromIndex < 0) {
i = 0;
} else if (fromIndex >= flen) {
return -1;
} else {
i = fromIndex;
}
if (zlen > flen) {
return -1;
} else if (zlen == flen) {
if (this == searchString) {
return 0;
} else {
return -1;
}
} else {
let str = '';
while (i < flen) {
str = this.substr(i, zlen);
if (str == searchString) {
return i;
}
i++;
}
if (i == flen) {
return -1;
}
}
};
}
```
这个手写的indexOf方法首先判断是否已经存在indexOf方法,如果不存在则将其定义为String.prototype的一个新的方法。然后在方法体内部,根据传入的参数进行相应的处理。
首先,将searchString转换为字符串类型,并获取原始字符串和子串的长度。接着,判断fromIndex是否为有效的数字,如果不是,则设置其默认值为0。然后根据fromIndex的值确定搜索的起始位置。
在循环中,使用substr方法逐个截取原始字符串中与子串长度相等的子串,然后与子串进行比较。如果相等,则返回当前索引位置;如果不相等,则继续循环直到搜索完整个字符串。如果循环结束后仍未找到匹配的子串,则返回-1表示未找到。
这样,通过手写的方式实现了JavaScript的indexOf方法。
阅读全文