find 和 findIndex 是查找即停方法:find 返回首个匹配元素值,未找到返回 undefined;findIndex 返回其索引,未找到返回 -1;二者均支持 thisArg,但不可用于查找全部匹配项。

find 和 findIndex 不是“遍历”工具,而是“查找即停”的搜索方法——找到第一个匹配项就立即返回,不会继续遍历剩余元素。
find:直接拿到匹配的元素值
它接收一个回调函数,对数组每个元素依次执行判断;一旦某个元素使回调返回真值(truthy),就立刻返回该元素,并终止查找。
- 没找到时返回 undefined
- 适合你只关心“这个东西是什么”,不关心它在哪
- 例子:
[1, 5, 8, 3].find(x => x > 4)→ 返回5(不是8,因为 5 更靠前)
findIndex:拿到匹配元素的下标
行为和 find 几乎一样,区别只在返回值:不是元素本身,而是它的索引位置。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 没找到时返回 -1
- 适合你要后续修改、删除或定位该元素(比如
arr.splice(index, 1)) - 例子:
['a', 'b', 'c'].findIndex(x => x === 'b')→ 返回1
它们都支持第二个参数 thisArg
如果回调里需要访问某个对象上下文,可以传入 this 值:
arr.find(function(x) { return x.id === this.targetId; }, { targetId: 100 })- 箭头函数不能用 thisArg,因为它不绑定 this
性能关键点:它们天然高效,但别误用
- 内部是顺序遍历,但找到即停,最坏情况才走完整个数组
- 不要用它们代替 for 循环来“处理所有匹配项”——它们只认第一个
- 要找全部匹配?用
filter();要找索引+值一起?考虑findIndex()配合arr[index]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










