当前位置:首页 > JavaScript

js实现indxof

2026-03-15 09:47:20JavaScript

实现 indexOf 的方法

JavaScript 中实现 indexOf 功能可以通过多种方式完成。以下是几种常见的实现方法:

使用原生方法

JavaScript 数组和字符串原生提供了 indexOf 方法,可以直接调用:

js实现indxof

const arr = [1, 2, 3, 4];
const str = "hello";

console.log(arr.indexOf(3)); // 输出: 2
console.log(str.indexOf("l")); // 输出: 2

自定义数组的 indexOf

如果需要手动实现数组的 indexOf,可以遍历数组并比较元素:

function customIndexOf(arr, target) {
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === target) {
            return i;
        }
    }
    return -1;
}

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

自定义字符串的 indexOf

对于字符串,可以逐字符比较:

js实现indxof

function customStrIndexOf(str, target) {
    const targetLen = target.length;
    for (let i = 0; i <= str.length - targetLen; i++) {
        if (str.substr(i, targetLen) === target) {
            return i;
        }
    }
    return -1;
}

const str = "hello world";
console.log(customStrIndexOf(str, "world")); // 输出: 6
console.log(customStrIndexOf(str, "abc")); // 输出: -1

使用 ES6 的 findIndex

对于数组,可以使用 findIndex 方法实现类似功能:

const arr = [1, 2, 3, 4];
const index = arr.findIndex(item => item === 3);
console.log(index); // 输出: 2

性能优化

对于大型数据,可以使用更高效的算法,如二分查找(前提是数组已排序):

function binarySearch(arr, target) {
    let left = 0;
    let right = arr.length - 1;
    while (left <= right) {
        const mid = Math.floor((left + right) / 2);
        if (arr[mid] === target) {
            return mid;
        }
        if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;
}

const sortedArr = [1, 2, 3, 4, 5];
console.log(binarySearch(sortedArr, 3)); // 输出: 2

标签: jsindxof
分享给朋友:

相关文章

js实现轮播

js实现轮播

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

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

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

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现tab选项卡切换

js实现tab选项卡切换

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

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…