Array.find() 查找第一个匹配元素
最后更新:2026-09-09
Array.find() 查找第一个匹配元素
find 返回数组中第一个满足测试函数的元素;找不到返回 undefined。只需要判断存在性时用 some,需要下标时用 findIndex。
| 分类 | 数组 |
|---|---|
| ES 版本 | ES6(2015) |
📝 语法
const 结果 = 数组.find((元素, 下标, 原数组) => 条件);
⚙️ 参数
| callback | 对每个元素执行一次;返回真值时查找停止并返回该元素。 |
|---|
返回值:第一个满足条件的元素,或 undefined。
是否修改原值:否(返回新值)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
{ id: 2, name: '李四', role: 'admin' }
undefined
💡 提示 find 返回的是原数组元素的引用——修改返回的对象会直接影响原数组。
⚠️ 警告 找到后立即停止遍历,大数据集里比 filter(...)[0] 高效得多。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Array.find() | ✓ v45 | ✓ v12 | ✓ v25 | ✓ v8 | ✓ v32 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关数组方法
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qfind 找不到时返回什么?
Aundefined。可以用结果 !== undefined 判断是否找到,但更语义化的是配合 some 先判断存在性。
Qfind 和 findIndex 用哪个?
A需要元素本身用 find;需要下标(如替换该位置的元素)用 findIndex。两者遍历行为完全一致。
Qfind 可以在对象数组里按多个条件查找吗?
A可以,回调里写复合条件:users.find(u => u.role === 'admin' && u.active)。