当前位置:首页 > JavaScript

js indexof的实现

2026-04-07 10:47:11JavaScript

JavaScript 中 indexOf 的实现

indexOf 是 JavaScript 中用于查找字符串或数组中某个元素首次出现位置的方法。以下是其实现原理及示例代码。

字符串的 indexOf 实现

字符串的 indexOf 方法用于查找子字符串在原字符串中首次出现的位置。如果未找到,返回 -1

js indexof的实现

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

示例用法:

js indexof的实现

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

示例用法:

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 实现继承

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

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…

js实现筛选

js实现筛选

JavaScript 实现数据筛选的方法 使用 Array.filter() 方法 Array.filter() 是 JavaScript 中最常用的筛选方法,它会创建一个新数组,包含通过回调函数测试…

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…

vue.js实现异步

vue.js实现异步

Vue.js 实现异步的方法 Vue.js 提供了多种方式来处理异步操作,以下是常见的实现方法: 使用 async/await 语法 在 Vue 组件的方法中,可以使用 async/await 来简…