js 实现indexof函数
实现 indexOf 函数
JavaScript 的 indexOf 方法用于返回字符串或数组中指定元素的第一个匹配位置的索引,如果未找到则返回 -1。以下是自定义实现方法。
字符串的 indexOf 实现
自定义字符串的 indexOf 方法,可以遍历字符串并匹配目标子串。

function customIndexOf(str, searchValue, fromIndex = 0) {
if (fromIndex >= str.length) {
return -1;
}
if (fromIndex < 0) {
fromIndex = 0;
}
for (let i = fromIndex; i < str.length; i++) {
let match = true;
for (let j = 0; j < searchValue.length; j++) {
if (str[i + j] !== searchValue[j]) {
match = false;
break;
}
}
if (match) {
return i;
}
}
return -1;
}
数组的 indexOf 实现
自定义数组的 indexOf 方法,可以遍历数组并匹配目标元素。

function customArrayIndexOf(arr, searchElement, fromIndex = 0) {
if (fromIndex >= arr.length) {
return -1;
}
if (fromIndex < 0) {
fromIndex = Math.max(0, arr.length + fromIndex);
}
for (let i = fromIndex; i < arr.length; i++) {
if (arr[i] === searchElement) {
return i;
}
}
return -1;
}
使用示例
字符串示例:
const str = "Hello, world!";
console.log(customIndexOf(str, "world")); // 输出: 7
console.log(customIndexOf(str, "abc")); // 输出: -1
数组示例:
const arr = [1, 2, 3, 4, 5];
console.log(customArrayIndexOf(arr, 3)); // 输出: 2
console.log(customArrayIndexOf(arr, 6)); // 输出: -1
注意事项
- 字符串实现需处理子串匹配逻辑,确保每个字符逐一比较。
- 数组实现直接比较元素是否严格相等(
===)。 - 可选参数
fromIndex支持从指定位置开始搜索,负数表示从末尾偏移。
以上实现模拟了原生 indexOf 的核心功能,适用于学习和理解其底层逻辑。






