JavaScript查找数组中指定元素的索引的方法小结

 更新时间:2026年01月19日 09:21:36   作者:Never_Satisfied  
这篇文章主要介绍了JavaScript中查找数组元素索引的五种方法:indexOf()、lastIndexOf()、findIndex()、findLastIndex()和手动循环,每种方法都有其适用场景和返回值,手动循环在性能上可能更优,选择时应考虑具体需求和数组大小,需要的朋友可以参考下

在 JavaScript 中,有几种方法可以查找数组中指定元素的索引:

1. indexOf() - 查找简单值

const arr = ['apple', 'banana', 'orange', 'banana'];

// 查找第一个匹配项的索引
console.log(arr.indexOf('banana')); // 1

// 查找不存在的元素
console.log(arr.indexOf('grape')); // -1

// 从指定位置开始查找
console.log(arr.indexOf('banana', 2)); // 3

2. lastIndexOf() - 从后往前查找

const arr = ['apple', 'banana', 'orange', 'banana'];

console.log(arr.lastIndexOf('banana')); // 3
console.log(arr.lastIndexOf('banana', 2)); // 1

3. findIndex() - 使用回调函数查找

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' }
];

// 查找第一个满足条件的元素索引
const index = users.findIndex(user => user.name === 'Bob');
console.log(index); // 1

// 查找年龄大于25的用户索引
const ages = [18, 22, 30, 45];
const ageIndex = ages.findIndex(age => age > 25);
console.log(ageIndex); // 2

4. findLastIndex() - 从后往前使用回调函数查找

const numbers = [1, 2, 3, 4, 3, 5];

// 从后往前查找第一个满足条件的元素索引
const lastIndex = numbers.findLastIndex(num => num === 3);
console.log(lastIndex); // 4

5. 手动循环实现

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

const arr = ['a', 'b', 'c'];
console.log(findIndexCustom(arr, 'b')); // 1
console.log(findIndexCustom(arr, 'd')); // -1

实际应用示例

// 查找对象数组中的特定元素
const products = [
  { id: 1, name: 'Laptop', price: 1000 },
  { id: 2, name: 'Phone', price: 500 },
  { id: 3, name: 'Tablet', price: 300 }
];

// 查找价格低于400的产品索引
const cheapProductIndex = products.findIndex(product => product.price < 400);
console.log(cheapProductIndex); // 2

// 查找所有匹配项的索引
function findAllIndexes(arr, value) {
  const indexes = [];
  let currentIndex = -1;
  
  while ((currentIndex = arr.indexOf(value, currentIndex + 1)) !== -1) {
    indexes.push(currentIndex);
  }
  
  return indexes;
}

const fruits = ['apple', 'banana', 'apple', 'orange', 'apple'];
console.log(findAllIndexes(fruits, 'apple')); // [0, 2, 4]

总结

  • 简单值查找:使用 indexOf()lastIndexOf()
  • 复杂条件查找:使用 findIndex()findLastIndex()
  • 返回值:所有方法在未找到时都返回 -1
  • 性能考虑:对于大型数组,indexOf() 通常比手动循环更快

根据具体需求选择合适的方法!

到此这篇关于JavaScript查找数组中指定元素的索引的方法小结的文章就介绍到这了,更多相关JS查找数组中指定元素的索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Echarts实现点击列表联动饼图的示例代码

    Echarts实现点击列表联动饼图的示例代码

    本文主要介绍了Echarts实现点击列表联动饼图的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 前端通过表单将pdf等文件传入后端

    前端通过表单将pdf等文件传入后端

    在一些情境下,用户通过浏览器上传word、excel、pdf等各种类型的文件到系统,上传后可以随时下载,下面这篇文章主要介绍了前端通过表单将pdf等文件传入后端的相关资料,需要的朋友可以参考下
    2024-09-09
  • 关于Ajax的原理以及代码封装详解

    关于Ajax的原理以及代码封装详解

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),相信大家对ajax都很熟悉,下面这篇文章主要给大家介绍了关于Ajax原理以及代码封装的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 一文详解JavaScript中如何阻止元素的默认行为

    一文详解JavaScript中如何阻止元素的默认行为

    在网页开发中,许多用户操作会触发浏览器的默认行为,例如,当用户点击一个超链接时,浏览器会导航到链接的目标页面,为了提升用户体验或控制页面行为,我们通常需要阻止这些默认行为,所以本文我们将探讨如何在JavaScript中阻止元素的默认行为,需要的朋友可以参考下
    2025-06-06
  • javascript实现复选框超过限制即弹出警告框的方法

    javascript实现复选框超过限制即弹出警告框的方法

    这篇文章主要介绍了javascript实现复选框超过限制即弹出警告框的方法,涉及复选框及警告框的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 在JavaScript 中按字母排序之如何在 JS 中按名称排序

    在JavaScript 中按字母排序之如何在 JS 中按名称排序

    有时你可能有一个单词数组,你想按字母顺序(从 a-z)对每个单词进行排序,或者你可能有一个包含用户信息(包括名字)的对象数组,例如,你想按照用户的名字来排序,接下来通过本文给大家介绍在JavaScript 中按字母排序之如何在 JS 中按名称排序,需要的朋友可以参考下
    2023-09-09
  • js解决select下拉选不中问题

    js解决select下拉选不中问题

    当事件mouseover中出现select下拉框时,select下拉是选不中的,下面有个不错的解决方法,大家可以看看
    2014-10-10
  • 简单的无缝滚动程序-仅几行代码

    简单的无缝滚动程序-仅几行代码

    简单的无缝滚动程序-仅几行代码...
    2007-05-05
  • javascript学习笔记之函数定义

    javascript学习笔记之函数定义

    本文主要给大家介绍了javascript的一些函数定义方面的基础知识,包括函数声明式、函数表达式、Function 构造函数等,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • JavaScript常用数学函数用法示例

    JavaScript常用数学函数用法示例

    这篇文章主要介绍了JavaScript常用数学函数用法,结合实例形式分析了JavaScript常见的对数、平方、绝对值、正弦、四舍五入等相关数学函数使用技巧,需要的朋友可以参考下
    2018-05-05

最新评论