前言

JavaScript 在 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() 的区别与共点

共点

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

find 和 filter 都不改变原数组

区别

1、通过一个测试功能

find() 返回第一个元素。

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

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

find() 返回未定义;

filter() 返回一个空数组。

JavaScript中find()和 filter()方法的区别小结的更多相关文章

  1. Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间       ...

  2. 关于javascript中apply()和call()方法的区别

    如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语 ...

  3. django model中get()和filter()方法的区别

    django的get()方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错. django的filter()方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在 ...

  4. javascript中apply()和call()方法及区别

    call()和apply()方法 1.方法定义 call方法: 语法:obj.call(thisObj, arg1, arg2, ...); 定义:调用一个对象的一个方法,以另一个对象替换当前对象. ...

  5. JavaScript中call,apply,bind方法的区别

    call,apply,bind方法一般用来指定this的环境. var a = { user:"hahaha", fn:function(){ console.log(this.u ...

  6. javascript中apply()和call()方法的区别

    一.方法的定义 call方法: 语法:call(thisObj,Object)定义:调用一个对象的一个方法,以另一个对象替换当前对象.说明:call 方法可以用来代替另一个对象调用一个方法.call ...

  7. javascript中toString和valueOf方法的区别

    toString():将对象转为字符串 valueOf():获取对象的原始值, 1.针对基本类型的变量:如在string,number,boolean类型的变量上调用这两个方法时,直接返回原始值,即变 ...

  8. 深入理解jQuery中live与bind方法的区别

    本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用 ...

  9. JavaScript中值类型和引用类型的区别

    JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null和undefined,它们既不是数字也不 ...

  10. js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...

随机推荐

  1. 如何使用 GoGoCode 一键 Vue2 转换 Vue3

    前言 从今年年初开始,项目开始升级优化,将之前的 Vue2 旧版本整体升级到 Vue3 版本.在重写了几个 Vue 文件后,我发现做的都是一些机械性的工作,效率低且重复性大.于是就试着搜索了一下有没有 ...

  2. Java新特性-四大函数式接口

    四大函数式接口指的是Consumer.Function.Predicate.Supplier,位于java.util.function包下: 函数式编程 lamabda表达式 函数式接口:在java中 ...

  3. 了解 Uniswap V2(DEX)

    Uniswap V2 是一个基于以太坊的去中心化交易所(DEX),它通过流动性池和自动化做市商(AMM)模型来实现去中心化的代币交换.以下是 Uniswap V2 的核心概念: 1. 自动化做市商(A ...

  4. PHP Excel Word 文件转 HTML输出

    ob_end_clean(); $filePath = './123.xls'; //$filePath = './123.docx'; $savePath = './123.html'; //这里记 ...

  5. linux开启快捷键,牛逼的狠~

    vim env_show #!/bin/bash echo '-----------A------------- XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ...

  6. 前端性能优化:使用 Web Workers 实现轮询

    // pollWorker.js import { Base64 } from 'js-base64'; import RsaAndAes from '~/composables/RsaAndAes' ...

  7. 快速量产低功耗 4G 定位方案?Air201 模组来搞定!

    今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获. 寻寻觅觅低功耗4G定位方案? 一个Air201就够了! --定位准.体积小.功耗低,助力行业客户快速量产! 01 ...

  8. 低功耗4G模组:Air780EP开发板RC522实例

    ​ 本文讲解合宙Air780EP开发板RC522实例,文末[阅读原文]获取最新资料. 本文档适用于Air780EP开发板 关联文档和使用工具 LuatOS-Soc固件获取 https://gitee. ...

  9. P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖

    P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖 题面及数据范围 对于一个点对,可以降维为线段,转化为 1 维的问题. 如图: 我们可以在横着的方向 ...

  10. VUE懒加载的table前端搜索

    // 前端搜索 fliterData() { const search = this.search if (search) { this.blist = this.list.filter(item = ...