整合营销服务商

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

免费咨询热线:

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
//[{ 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() 返回一个空数组

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通过findAll('h4')获取jin10网站的消息,jin10是一个财经资讯类网站

注意事项:本电脑环境是python 3.7

网页爬取数据的步骤:

1、导入相应的模块,例如request,BeautifulSoup等。
2、对网站进行请求
3、对网站HTML源代码进行解析
4、尝试打印所获取的数据

代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd
#1、网页请求
url="https://www.jin10.com/" #设置请求网址为jin10网站
response=requests.get(url) #对金十财经网站进行get请求并将请求结果赋值给response
response.encoding='utf-8' #设置网页的编码为'utf-8'
html=response.text #获取网页的html源代码并赋值给html
#2、解析网站
#经查实发现所有的消息类信息都在h4标签里,故去获取h4标签数据
soup=BeautifulSoup(html,'lxml') #解析html网页的lxml代码,并赋值给soup
content=soup.findAll('h4') #查找网页的h4标签
#3、遍历p标签数据
for msg in content: #遍历h4标签的内容
 print(msg.text) #打印h4标签的内容,用text获取数据

代码运行结果如下图所示: