当前位置:首页 > 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实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…