find返回匹配元素本身,findindex返回其索引;二者均只找第一个满足条件的项,未找到时find返回undefined、findindex返回-1。

find 和 findIndex 都用于查找数组中第一个满足条件的元素,区别在于:前者返回**元素本身**,后者返回该元素的**索引位置**(数字),没找到则都返回 undefined。
find:拿到匹配的元素值
它接收一个回调函数,遍历数组,对每个元素执行该函数;一旦某个元素让函数返回真值(truthy),就立刻停止遍历,并返回这个元素。
示例:
const firstBig = numbers.find(n => n > 20); // 返回 25
const foundObj = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}].find(u => u.id === 2); // 返回 {id: 2, name: 'Bob'}
findIndex:拿到匹配元素的位置
用法和 find 完全一致,只是返回的是下标(从 0 开始),不是元素值。适合需要后续修改、删除或定位操作的场景。
示例:
const fruits = ['apple', 'banana', 'cherry'];const idx = fruits.findIndex(f => f.includes('na')); // 返回 1('banana' 的索引)
if (idx !== -1) {
fruits[idx] = fruits[idx].toUpperCase(); // 把 'banana' 改成 'BANANA'
}
注意几个关键细节
- 两个方法都只找“第一个”匹配项,不会继续往后找
- 回调函数参数默认是
element、index、array,可按需使用,比如arr.findIndex((x, i) => x === target && i > 2) - 没找到时,
find返回undefined,findIndex返回-1(不是undefined) - 空数组调用会直接返回
undefined或-1,不报错
和 filter、indexOf 的区别
filter 返回所有匹配项组成的**新数组**;indexOf 只能做严格相等判断(不能写复杂逻辑);而 find/findIndex 支持任意判断逻辑,且只返回首个结果,性能更优。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











