Skip to content
On this page
🎨 作者:Jacinda 📔 阅读量:

Find & Filter 方法的区别

find()

返回数组里通过测试函数(函数内判断,也就是符合条件)的第一个元素的值。如果不满足测试函数,则 返回undefined

⚠️ 返回的是一个符合条件的元素,不是新的数组。如果有相同的值,则返回第一个值

示例1

js
api.getTeaNewsListData(page).then(res => {
    let arr = res.data;
    this.dataInfo = arr.find(item => item.id == e.id)
});

代码解读

首先,通过接口返回了一个数组,数组里存在所有数据。由于后端给的接口不是带参的,不能通过带id去获取它的详情数据。

现在是需要获取属于当前页id里的详细数据,那么针对一个数组里去查找,方法很多,可以用遍历等等。这里用的是find(),函数里的判断条件给定id相等,并且只返回符合条件的一个值,也就是数组里符合条件的第一条数据。

示例2

js
let users = [{
    id:1,
    name: 'John',
    age: 22
}, {
    id:2,
    name: 'Tom',
    age: 22
}, {
    id:3,
    name: 'Balaji',
    age: 24
}];

//使用 find() 方法查找年龄大于 23 的第一个用户。
users.find(user => user.age > 23)
//{ id: 3, name: 'Balaji', age:24}

//要找到第一个年龄为 22 的用户
users.find(user => user.age === 22)
//{ id: 1, name: 'John', age:22}

filter()

用于对Array进行过滤,可以理解为有条件的筛选,然后返回符合要求的元素的新数组。返回值还是Array类型,只是元素做了改变。如果没有元素满足测试函数,则返回一个空数组。

示例

对数组进行筛选,只保留奇数

js
let arr = [1, 2, 4, 5, 6, 9, 10, 15];
let res = arr.filter( item => 
    item % 2 !== 0
);
res  // [1, 5, 9, 15]

区别

1. 如果符合条件

  • find() 返回 第一个元素
  • filter() 返回一个 包含符合条件元素的数组

2. 如果不满足条件

  • find() 返回 undefined
  • filter() 返回 空数组

📖 参考文档