当前位置:首页 > JavaScript

js实现indxof

2026-04-07 03:16:36JavaScript

实现 indexOf 的方法

在 JavaScript 中,indexOf 方法用于返回指定值在字符串或数组中首次出现的位置。如果未找到该值,则返回 -1。以下是几种实现 indexOf 的方法:

js实现indxof

字符串的 indexOf 实现

function customIndexOf(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) 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;
}

使用递归实现

function recursiveIndexOf(str, searchValue, fromIndex = 0) {
  if (fromIndex >= str.length) return -1;
  if (str[fromIndex] === searchValue) return fromIndex;

  return recursiveIndexOf(str, searchValue, fromIndex + 1);
}

使用 Array.prototype.reduce 实现

function reduceIndexOf(arr, searchElement, fromIndex = 0) {
  return arr.reduce((acc, curr, index) => {
    if (index < fromIndex) return acc;
    if (curr === searchElement && acc === -1) return index;
    return acc;
  }, -1);
}

注意事项

  • 确保处理负数 fromIndex 的情况。
  • 边界条件检查(如 fromIndex 大于字符串或数组长度)。
  • 严格相等比较(===)用于匹配元素。

以上方法可以根据实际需求选择使用。

标签: jsindxof
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现下拉刷新

js实现下拉刷新

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