js indexof的实现
JavaScript 中 indexOf 的实现
indexOf 是 JavaScript 中用于查找字符串或数组中某个元素首次出现位置的方法。以下是其实现原理及示例代码。
字符串的 indexOf 实现
字符串的 indexOf 方法用于查找子字符串在原字符串中首次出现的位置。如果未找到,返回 -1。
function stringIndexOf(str, searchValue, fromIndex = 0) {
if (fromIndex < 0) fromIndex = 0;
if (fromIndex >= str.length) return -1;
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;
}
示例用法:
const str = "Hello, world!";
console.log(stringIndexOf(str, "world")); // 输出: 7
console.log(stringIndexOf(str, "abc")); // 输出: -1
数组的 indexOf 实现
数组的 indexOf 方法用于查找元素在数组中首次出现的位置。如果未找到,返回 -1。
function arrayIndexOf(arr, searchElement, fromIndex = 0) {
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 arr = [1, 2, 3, 4, 5];
console.log(arrayIndexOf(arr, 3)); // 输出: 2
console.log(arrayIndexOf(arr, 6)); // 输出: -1
注意事项
- 字符串的
indexOf区分大小写。例如,"Hello".indexOf("h")返回-1。 - 数组的
indexOf使用严格相等(===)进行比较。 - 可以指定
fromIndex参数从特定位置开始搜索。






