find方法返回第一个满足条件的数组元素,未找到返回undefined;不修改原数组,效率高于filter;可配合?.安全取值。

find 是 JavaScript 数组上一个非常实用的方法,专门用来查找并返回**第一个满足条件的元素**,找到就立即停止遍历,效率高、语义清晰。
基本用法:传入一个判断函数
调用 array.find(callback),callback 接收当前元素、索引和原数组三个参数,只需返回 true/false。一旦某个元素让回调返回 true,find 就立刻返回该元素值;如果全程没匹配,返回 undefined。
- 只返回元素本身,不返回索引或新数组
- 不会修改原数组
- 找不到时返回 undefined(注意判空)
常见使用场景示例
比如有一个用户列表,要找 id 为 102 的用户:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
const target = users.find(u => u.id === 102); // {id: 102, name: '李四'}
再比如找第一个偶数:
const nums = [1, 3, 4, 6, 7];const firstEven = nums.find(n => n % 2 === 0); // 4
注意与 findIndex、filter 的区别
- findIndex 返回的是匹配元素的索引(数字),不是元素本身
- filter 返回所有满足条件的元素组成的新数组,即使只想要第一个也仍会遍历完整个数组
- 而 find 在命中第一个后就终止,性能更优,语义更准确
小技巧:配合可选链操作符安全取值
因为 find 可能返回 undefined,直接访问属性会报错。可用可选链(?.)避免异常:
const user = users.find(u => u.id === 999);console.log(user?.name); // undefined,不报错
// 或一步写成:
console.log(users.find(u => u.id === 999)?.name);










