整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript 中 find() 和 filter() 方法的区别

avaScript 在 ES6 上有很多数组方法,每种方法都有独特的用途和好处。

在开发应用程序时,大多使用数组方法来获取特定的值列表并获取单个或多个匹配项。

在列出这两种方法的区别之前,我们先来一一了解这些方法。

JavaScript find() 方法

ES6 find() 方法返回通过测试函数的第一个元素的值。如果没有值满足测试函数,则返回 undefined。

语法

以下语法中使用的箭头函数。

find((element) => { /* ... */ } )
find((element, index) => { /* ... */ } )
find((element, index, array) => { /* ... */ } )

我们有一个包含名称 age 和 id 属性的用户对象列表,如下所示:

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

以下代码使用 find() 方法查找年龄大于 23 的第一个用户。

console.log(users.find(user => user.age > 23));
//console
//{ id: 3, name: 'Balaji', age:24}

现在我们要找到第一个年龄为 22 的用户

console.log(users.find(user => user.age === 22));
//console
//{ id: 1, name: 'John', age:22}

假设没有找到匹配意味着它返回 undefined

console.log(users.find(user => user.age === 25));
//console
//undefined

JavaScript filter() 方法

filter() 方法创建一个包含所有通过测试函数的元素的新数组。如果没有元素满足测试函数,则返回一个空数组。

语法

filter((element) => { /* ... */ } )
filter((element, index) => { /* ... */ } )
filter((element, index, array) => { /* ... */ } )

我们将使用相同的用户数组和测试函数作为过滤器示例。

以下代码使用 filter() 方法查找年龄大于 23 的第一个用户。

console.log(users.filter(user => user.age > 23));
//console
现在我们要过滤年龄为 22 岁的用户//[{ id: 3, name: 'Balaji', age:24}]

现在我们要过滤年龄为 22 岁的用户

console.log(users.filter(user => user.age === 22));
//console
//[{ id: 1, name: 'John', age:22},{ id: 2, name: 'Tom', age:22}]

假设没有找到匹配意味着它返回一个空数组

console.log(users.filter(user => user.age === 25));
//console
//[]

find() 和 filter() 的区别与共点

共点

高阶函数:这两个函数都是高阶函数。

区别

1、通过一个测试功能

find() 返回第一个元素。

filter() 返回一个包含所有通过测试函数的元素的新数组。

2、如果没有值满足测试函数

find() 返回未定义;

filter() 返回一个空数组;


- End -

ind() 方法用于查找数组中符合条件的第一个元素,并返回该元素。find() 方法可以接受一个回调函数作为参数,该回调函数会依次遍历数组中的每一个元素,如果回调函数返回 true,则表示找到了符合条件的元素,该元素将作为 find() 方法的返回值;如果遍历完数组后仍未找到符合条件的元素,则返回 undefined。

语法:

array.find(callback[, thisArg])
  • 其中,array 是要查找的数组;
  • callback 是回调函数,它可以接受三个参数:当前元素的值、当前元素的索引、当前数组对象;
  • thisArg 是指定 callback 函数中 this 的值,默认为 undefined。

示例:

//查找大于3的元素
var arr = [1, 2, 3, 4, 5, 6];
var result = arr.find(item=> { 
 return item >= 3;
}); 
console.log(result); // 3
  • 在上面的代码中,callback 函数接受一个参数 item,表示当前元素的值,如果 item 大于等于 3,则返回 true,该元素将作为 find() 方法的返回值。

find() 方法是 JavaScript 中常用的数组方法之一,它可以用于快速查找数组中符合条件的元素。find() 方法只返回符合条件的第一个元素,如果数组中存在多个符合条件的元素,它们将被忽略。

ython爬虫采集的时候会需要对采集的内容进行处理行为,处理什么?简单的说就是处理多余的HTML代码跟确定文章标题跟结尾,还有内容区间,方法如下:

首先先是定位,我们先假设我们采集到了一批数据,数据里的内容是这样的<title>这里是标题</title>,<p>内容肯定是很多的,不过这里也就自己随便手打一些来随便用用。</p>,当然,我们采集到的内容肯定不会这么干净的,这样我们就需要处理一下内容的问题了。

假设<title>前面还有一些不要的HTML代码,那么我们就要处理掉,不然采集下来就挺难看的,所以我们需要处理掉:

h = html.find('<title>') #这一段是定位开头。

b = html.find('</title>') #这一段是定位结尾,我们用的是find方法。

字符串的定位都可以用find方法来处理,find方法是检测str是否包含在string里,如果指定了位置,那么他就会查找指定位置的范围内是否存在,如果有就返回索引值,没有就会返回-1。

当然,还有另一个方法,叫做index,不过这个方法如果不存在的话就会报错,不建议多用。