js实现indxof
实现 indexOf 的方法
JavaScript 中实现 indexOf 功能可以通过多种方式完成。以下是几种常见的实现方法:
使用原生方法
JavaScript 数组和字符串原生提供了 indexOf 方法,可以直接调用:

const arr = [1, 2, 3, 4];
const str = "hello";
console.log(arr.indexOf(3)); // 输出: 2
console.log(str.indexOf("l")); // 输出: 2
自定义数组的 indexOf
如果需要手动实现数组的 indexOf,可以遍历数组并比较元素:
function customIndexOf(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) {
return i;
}
}
return -1;
}
const arr = [1, 2, 3, 4];
console.log(customIndexOf(arr, 3)); // 输出: 2
console.log(customIndexOf(arr, 5)); // 输出: -1
自定义字符串的 indexOf
对于字符串,可以逐字符比较:

function customStrIndexOf(str, target) {
const targetLen = target.length;
for (let i = 0; i <= str.length - targetLen; i++) {
if (str.substr(i, targetLen) === target) {
return i;
}
}
return -1;
}
const str = "hello world";
console.log(customStrIndexOf(str, "world")); // 输出: 6
console.log(customStrIndexOf(str, "abc")); // 输出: -1
使用 ES6 的 findIndex
对于数组,可以使用 findIndex 方法实现类似功能:
const arr = [1, 2, 3, 4];
const index = arr.findIndex(item => item === 3);
console.log(index); // 输出: 2
性能优化
对于大型数据,可以使用更高效的算法,如二分查找(前提是数组已排序):
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
}
if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
const sortedArr = [1, 2, 3, 4, 5];
console.log(binarySearch(sortedArr, 3)); // 输出: 2






