Web前端JavaScript中findIndex方法使用示例

 更新时间:2025年08月23日 14:24:02   作者:一只小风华~  
这篇文章主要介绍了Web前端JavaScript中findIndex方法使用的相关资料,findIndex() 返回第一个符合条件的数组子项的下标,找到符合条件的之后就不在继续遍历,需要的朋友可以参考下

1. findIndex是什么?

  • findIndex 是 JavaScript 数组(Array)自带的一个方法。

  • 它的核心任务是:遍历数组中的每一个元素,用你提供的一个“测试条件”(一个函数)去检查每个元素。一旦找到第一个能让这个“测试条件”返回 true 的元素,它就立刻停止查找,并返回这个元素在数组中的位置(索引)

  • 如果遍历完整个数组,都没有任何一个元素能让“测试条件”返回 true,那么 findIndex 就返回 -1(这是一个通用的“没找到”的信号)。

2. 它的作用(解决了什么问题?)

 想象一下这些场景:

  • 场景1: 你有一个学生名单(数组),每个学生是一个对象,包含 idnamescore。你想快速知道第一个分数大于 90 分的学生在名单里排第几位?

  • 场景2: 你有一个任务列表(数组),每个任务有 idtitlecompleted(是否完成)。你想找出第一个还没完成的任务(completed 为 false)在列表中的位置,以便把它置顶显示。

  • 场景3: 你在处理用户输入的一组数字,想找到第一个是负数的数字出现在第几个位置。

 在这些场景中,你都需要:

  1. 检查每个元素是否符合某个条件。

  2. 找到第一个符合条件的

  3. 得到它的位置(索引),而不是元素本身的值。

findIndex 方法就是被设计出来完美解决这类问题的!它帮你省去了手动写 for 循环遍历、设置标志变量、判断条件、找到后 break 跳出循环这些繁琐的步骤。

3. 如何使用?

findIndex 方法接收一个非常重要的参数:一个回调函数(callback function)。这个函数就是前面说的“测试条件”。它的基本语法是:

const foundIndex = array.findIndex(callbackFunction);

回调函数怎么写?

这个回调函数会被 findIndex 自动调用,通常接收三个参数(后两个可选):

  1. element当前正在被检查的数组元素(必须)。

  2. index: (可选)当前元素的索引。

  3. array: (可选)调用 findIndex 方法的那个数组本身。

最重要的是,这个回调函数需要返回一个布尔值(true 或 false):

  • 如果返回 true,表示当前元素符合你的条件findIndex 会立刻停止查找,并返回当前元素的索引。

  • 如果返回 false,表示不符合,findIndex 会继续检查下一个元素。

4. 举个栗子 

场景: 找学生名单里第一个分数大于 90 的学生位置。

const students = [
  { id: 1, name: '小明', score: 85 },
  { id: 2, name: '小红', score: 92 }, // 第一个 >90 的在这里!
  { id: 3, name: '小刚', score: 78 },
  { id: 4, name: '小丽', score: 95 }
];

// 使用 findIndex
const firstHighScoreIndex = students.findIndex(function(student) {
  // 回调函数:检查当前学生的分数是否大于90
  return student.score > 90;
});

console.log(firstHighScoreIndex); // 输出: 1 (因为小红在数组索引1的位置)

发生了什么?

  1. findIndex 从索引 0(小明)开始调用回调函数:小明.score > 90 -> 85 > 90 -> false -> 继续。

  2. 到索引 1(小红):小红.score > 90 -> 92 > 90 -> true! -> 立刻停止

  3. findIndex 返回 1(小红的索引)。

  4. 后面的小刚和小丽就不会再被检查了。

 更简洁的写法(箭头函数):

const firstHighScoreIndex = students.findIndex(student => student.score > 90);
console.log(firstHighScoreIndex); // 输出: 1

5. 如果没找到呢?

const firstHighScoreIndex = students.findIndex(student => student.score > 100); // 没人分数大于100
console.log(firstHighScoreIndex); // 输出: -1

6. 和它的“亲戚们”对比一下,加深理解

  • find: 这是 findIndex 的“双胞胎”。它做的事情几乎一样:遍历数组,用回调函数测试,找到第一个符合条件的元素。关键区别在于返回值:find 返回的是符合条件的那个元素本身(比如返回小红这个学生对象),而 findIndex 返回的是这个元素的索引(1)。你需要元素本身就用 find,需要位置就用 findIndex

  • indexOf / lastIndexOf: 这两个方法也返回索引。但它们找东西的方式简单粗暴:它们找的是严格等于(===) 某个具体值的元素。比如 students.indexOf({id:2, ...}) 是找不到小红的(因为对象引用不同),或者 [1, 2, 3].indexOf(2) 返回 1。而 findIndex 强大之处在于可以用任何复杂的条件(比如 score > 90)来找,不局限于简单的值相等。

  • filterfilter 会返回所有符合条件的元素组成的新数组。它不在乎位置,也不会在找到第一个后就停止,它会检查完所有元素。如果你只需要第一个,用 findIndex 或 find 性能更好。

  • somesome 只关心数组里有没有符合条件的元素(返回 true 或 false)。它不关心是哪一个,也不关心位置。找到第一个符合条件的就返回 true 并停止(这点和 findIndex 停止时机类似),但返回值是布尔值而不是索引。

7. 总结 & 关键点

  • findIndex 是数组方法:用来在数组中查找元素。

  • 核心功能:找到第一个满足你提供的“测试函数”(回调函数)的元素,并返回它的索引(位置)

  • 回调函数是核心:你定义查找条件的逻辑就写在这个函数里。它接收当前元素(必选)、索引(可选)、数组本身(可选),并必须返回 true 或 false

  • 找到就停:一旦回调函数对某个元素返回 truefindIndex 立刻返回该索引,停止后续查找。

  • 找不到返回 -1:如果遍历完都没找到符合条件的元素,返回 -1记得检查这个返回值!

  • 何时使用:当你需要知道数组中第一个满足某个(可能比较复杂的)条件的元素所在的位置时。

  • 优势:比手动写循环简洁,条件灵活(不像 indexOf 只能简单匹配值)。

到此这篇关于Web前端JavaScript中findIndex方法使用的文章就介绍到这了,更多相关JS findIndex方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS验证码实现代码

    JS验证码实现代码

    本文通过实例代码给大家分享基于javascript实现的验证码功能,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • 原生JS实现目录滚动特效

    原生JS实现目录滚动特效

    这篇文章主要为大家详细介绍了原生JS实现目录滚动特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 浅谈JS原型对象和原型链

    浅谈JS原型对象和原型链

    这篇文章主要为大家详细介绍了JS原型对象和原型链,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Nginx上传文件全部缓存解决方案

    Nginx上传文件全部缓存解决方案

    Nginx默认会对上传的文件先在本地进行缓存,再转发到应用服务器。请问怎么禁止掉这个缓存,让Nginx只转发而不缓存文件?本文给大家详细介绍Nginx上传文件全部缓存解决方案,有需要的朋友来参考下
    2015-08-08
  • 随机显示经典句子或诗歌的javascript脚本

    随机显示经典句子或诗歌的javascript脚本

    这篇文章主要介绍了随机显示经典句子或诗歌的javascript脚本的相关资料,需要的朋友可以参考下
    2007-08-08
  • 用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数

    用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数

    用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数 函数的参数:elem元素、页面主体宽度(如:990、950宽)、elem与页面主体DIV的左边距
    2012-01-01
  • 怎么选择Javascript框架(Javascript Framework)

    怎么选择Javascript框架(Javascript Framework)

    如果你正面临这样的问题,希望下面的几个建议对你在选择javascript框架上会有所帮助
    2013-11-11
  • 前端获取IP地址的方法总结

    前端获取IP地址的方法总结

    这篇文章主要介绍了前端获取IP地址的四种方法:Vite配置、WebRTC、internal-ip插件及第三方API,并说明了各方法在不同环境下的适用性与限制,通过代码示例讲解的非常详细,需要的朋友可以参考下
    2025-07-07
  • 学习JavaScript设计模式之模板方法模式

    学习JavaScript设计模式之模板方法模式

    这篇文章主要为大家介绍了JavaScript设计模式中的模板方法模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下
    2016-01-01
  • js获取内联样式的方法

    js获取内联样式的方法

    这篇文章主要介绍了js获取内联样式的方法,针对标准浏览器与IE浏览器进行不同的判断与获取,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01

最新评论