JavaScript 中 find 和 filter 的区别
·
JavaScript 中 find 和 filter 的区别
在 JavaScript 中,find 和 filter 都是数组的方法,但它们的功能和返回结果有明显区别,具体如下:
| 特性 | find 方法 |
filter 方法 |
|---|---|---|
| 返回结果 | 返回第一个满足条件的单个元素(对象或基本类型值);若没有匹配项,返回 undefined |
返回所有满足条件的元素组成的新数组;若没有匹配项,返回空数组 [] |
| 使用场景 | 只需找到 “一个” 符合条件的元素时使用(比如根据唯一 ID 找数据) | 需要获取 “多个” 符合条件的元素时使用(比如筛选出所有价格低于 50 的商品) |
| 执行逻辑 | 找到第一个匹配项后,会立即停止遍历,性能更优 | 会遍历数组的所有元素,收集所有匹配项,性能相对弱于 find(当只需一个结果时) |
代码示例对比
假设我们有一个餐厅数组:
const restaurants = \[
  { \_id: '1', name: '云味小馆', rating: 4.8 },
  { \_id: '2', name: '川香阁', rating: 4.5 },
  { \_id: '3', name: '云味小馆分店', rating: 4.8 }
];
用 find 查找
const restaurant = restaurants.find(r => r.rating === 4.8);
console.log(restaurant); 
// 输出:{ \_id: '1', name: '云味小馆', rating: 4.8 }(只返回第一个匹配的元素)
用 filter 查找
const matchedRestaurants = restaurants.filter(r => r.rating === 4.8);
console.log(matchedRestaurants); 
// 输出:\[
// { \_id: '1', name: '云味小馆', rating: 4.8 },
// { \_id: '3', name: '云味小馆分店', rating: 4.8 }
// ](返回所有匹配的元素组成的数组)
简单来说,find 找 “一个”,filter 找 “一堆”,可以根据业务需求选择使用。
更多推荐


所有评论(0)