当前位置:首页 > JavaScript

js indexof 实现

2026-04-05 18:01:00JavaScript

实现 JavaScript 的 indexOf 方法

indexOf 是 JavaScript 中用于查找字符串或数组中指定元素首次出现位置的方法。以下是自定义实现方案:

字符串的 indexOf 实现

function customStringIndexOf(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 customArrayIndexOf(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;
}

关键特性说明

字符串实现需要处理子串匹配情况,当找到第一个字符匹配时需要检查后续字符是否完全匹配。

数组实现相对简单,只需遍历数组找到第一个严格相等的元素即可。

两个实现都支持可选的起始位置参数,当起始位置为负数时会按照规范进行特殊处理。

使用示例

console.log(customStringIndexOf("hello world", "world")); // 6
console.log(customArrayIndexOf([1, 2, 3, 4], 3)); // 2

边界情况处理

实现考虑了各种边界情况:

js indexof 实现

  • 起始位置为负数
  • 起始位置超出范围
  • 搜索值为空字符串
  • 未找到匹配项返回-1

这些实现模拟了原生 indexOf 方法的核心功能,可以作为理解底层原理的参考。

标签: jsindexof
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…