js实现indexof

实现 JavaScript 的 indexOf 方法
JavaScript 的 indexOf 方法用于返回指定值在字符串或数组中首次出现的位置。以下是自定义实现方式:
字符串的 indexOf 实现
function customIndexOf(str, searchValue, fromIndex = 0) {
if (fromIndex < 0) fromIndex = 0;
if (fromIndex >= str.length) return -1;
for (let i = fromIndex; i < str.length; i++) {
if (str[i] === searchValue[0]) {
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 实现
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 str = "Hello World";
console.log(customIndexOf(str, "World")); // 输出: 6
const arr = [1, 2, 3, 4, 5];
console.log(arrayIndexOf(arr, 3)); // 输出: 2
实现说明
字符串实现检查从指定位置开始是否存在与搜索字符串匹配的子串。数组实现则从指定位置开始线性搜索目标元素。两者都遵循原生 indexOf 的行为规范,包括负数索引处理和未找到时返回 -1。
对于更完整的实现,还需要考虑 Unicode 字符和严格相等比较等边界情况,但以上代码提供了核心功能的基本实现。







