Array.prototype.find() 返回数组中第一个满足条件的元素,否则返回undefined;它不修改原数组,找到即停,回调函数需返回true才匹配,常用于查找对象或基础类型值,并注意与filter、findIndex的区别及安全使用。

Array.prototype.find() 是 ES6 引入的数组方法,用于查找并返回数组中第一个满足条件的元素;如果没有找到,则返回 undefined。它不会修改原数组,也不会遍历整个数组——一旦找到匹配项就立即停止。
基本用法:传入一个回调函数
回调函数接收三个参数:当前元素、索引、原数组,通常只用到第一个(当前元素):
-
语法:
arr.find(callback) - callback 返回 true 表示“命中”,find 就立刻返回该元素
- 不写 return 或返回 falsy 值(如 false、0、null)都不算匹配
常见查找场景示例
查找对象数组中的某条记录:
const users = [
{ id: 1, name: 'Alice', active: true },
{ id: 2, name: 'Bob', active: false },
{ id: 3, name: 'Charlie', active: true }
];
const activeUser = users.find(u => u.active); // { id: 1, name: 'Alice', active: true }
const userById = users.find(u => u.id === 3); // { id: 3, name: 'Charlie', active: true }
查找基础类型数组中的值:
立即学习“Java免费学习笔记(深入)”;
const numbers = [10, 20, 30, 40, 50]; const firstOver25 = numbers.find(n => n > 25); // 30 const fruits = ['apple', 'banana', 'cherry']; const longName = fruits.find(f => f.length > 6); // 'banana'
注意与 filter、findIndex 的区别
- find() → 返回元素本身(适合“取一个”)
- filter() → 返回新数组(适合“取多个”,哪怕只有一个也返回数组)
- findIndex() → 返回索引(适合需要位置或后续修改时)
安全使用小贴士
- 始终检查返回值是否为
undefined,避免访问.property报错 - 如果不确定是否存在,可配合空值合并操作符:
user?.name ?? '未知用户' - 避免在回调里做复杂计算或副作用(如修改外部变量),保持纯函数风格


















