当前位置:首页 > JavaScript

js indexof的实现

2026-04-07 10:47:11JavaScript

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;
}

示例用法:

js indexof的实现

const arr = [1, 2, 3, 4, 5];
console.log(arrayIndexOf(arr, 3)); // 输出: 2
console.log(arrayIndexOf(arr, 6)); // 输出: -1

注意事项

  1. 字符串的 indexOf 区分大小写。例如,"Hello".indexOf("h") 返回 -1
  2. 数组的 indexOf 使用严格相等(===)进行比较。
  3. 可以指定 fromIndex 参数从特定位置开始搜索。

标签: jsindexof
分享给朋友:

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…