js 数组 find,some,filter,reduce区别详解

当我们在开发 JavaScript 程序时,经常会用到数组的各种方法,其中包括 find、some、filter 和 reduce 等方法。这些方法可以帮助我们在数组中找到特定的元素、过滤不需要的元素、对数组进行操作并返回新的数组等。

下面就一个一个地详细讲解这些方法的用法和区别:

find 方法

find 方法返回满足条件的第一个元素,如果找不到,返回 undefined。

语法:array.find(callback(element[, index[, array]])[, thisArg])

参数:

  • callback:用于测试元素的函数,它返回 true 表示找到了,false 表示未找到。它的三个参数分别为:element(当前值),index(当前值的索引),array(当前数组对象)
  • thisArg(可选):执行 callback 时 this 对象的值。

示例1:

let ary = [1, 2, 3, 4, 5]
let res = ary.find(item => item > 3)
console.log(res) // 4

示例2:

let ary = [
  { name: '小明', age: 20 },
  { name: '小红', age: 21 },
  { name: '小李', age: 22 }
]
let res = ary.find(item => item.age === 21)
console.log(res) // { name: '小红', age: 21 }

some 方法

some 方法用于检测数组中是否有满足条件的元素,如果有,则返回 true,否则返回 false。

语法:array.some(callback(element[, index[, array]])[, thisArg])

参数:

  • callback:用于测试元素的函数,它返回 true 表示找到了,false 表示未找到。它的三个参数分别为:element(当前值),index(当前值的索引),array(当前数组对象)
  • thisArg(可选):执行 callback 时 this 对象的值。

示例1:

let ary = [1, 2, 3, 4, 5]
let res = ary.some(item => item > 3)
console.log(res) // true

示例2:

let ary = [
  { name: '小明', age: 20 },
  { name: '小红', age: 21 },
  { name: '小李', age: 22 }
]
let res = ary.some(item => item.age === 25)
console.log(res) // false

filter 方法

filter 方法过滤出数组中满足条件的元素,并返回一个新数组。如果没有找到满足条件的元素,则返回空数组。

语法:array.filter(callback(element[, index[, array]])[, thisArg])

参数:

  • callback:用于测试元素的函数,它返回 true 表示当前元素符合条件,false 表示不符合条件。它的三个参数分别为:element(当前值),index(当前值的索引),array(当前数组对象)
  • thisArg(可选):执行 callback 时 this 对象的值。

示例1:

let ary = [1, 2, 3, 4, 5]
let res = ary.filter(item => item > 3)
console.log(res) // [4, 5]

示例2:

let ary = [
  { name: '小明', age: 20 },
  { name: '小红', age: 21 },
  { name: '小李', age: 22 }
]
let res = ary.filter(item => item.age > 20)
console.log(res) // [{ name: '小红', age: 21 }, { name: '小李', age: 22 }]

reduce 方法

reduce 方法对数组的所有元素依次执行 callback 函数,并返回一个最终的结果。该方法的参数有两个:

语法:array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

参数:

  • callback:每个元素都会执行该回调函数。回调函数的四个参数依次为:accumulator(累加器)、currentValue(当前元素值)、currentIndex(当前元素的索引)、array(当前数组对象)。
  • initialValue(可选):用于初始化累加器的值。如果省略了该参数,则从数组的第一个元素开始执行 callback,累加器的默认值为数组的第一个元素的值。

示例1:

let ary = [1, 2, 3, 4, 5]
let res = ary.reduce((accumulator, currentValue) => accumulator + currentValue)
console.log(res) // 15

示例2:

let ary = [
  { name: '小明', age: 20 },
  { name: '小红', age: 21 },
  { name: '小李', age: 22 }
]
let res = ary.reduce((accumulator, currentValue) => accumulator + currentValue.age, 0)
console.log(res) // 63

以上就是 find、some、filter 和 reduce 等方法的详细讲解和示例使用。希望这些内容可以帮助您更好地理解和掌握这些方法的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 数组 find,some,filter,reduce区别详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 浅谈JavaScript中内存泄漏的几种情况

    浅谈 JavaScript 中内存泄漏的几种情况 JavaScript 作为一门动态语言,具有自动垃圾回收机制,可以自动管理内存,以使程序运行更加高效。然而,由于某些原因,一些对象可能会无法被垃圾收集器正确回收,导致内存泄漏。本文将介绍几种常见的 JavaScript 内存泄漏情况。 1. 全局变量 在 JavaScript 中,变量分为全局变量和局部变量。…

    JavaScript 2023年6月10日
    00
  • js中函数调用的两种常用方法使用介绍

    JS中函数调用的两种常用方法是函数声明与函数表达式,下面我将对这两种方法进行介绍和举例子说明。 1. 函数声明 函数声明的形式如下: function functionName(parameters) { //函数体 } 其中,functionName 是函数名,parameters 是参数列表,函数体里面可以写任何合法的 JS 代码。函数声明完之后,我们可…

    JavaScript 2023年5月27日
    00
  • python爬虫selenium和phantomJs使用方法解析

    Python爬虫使用Selenium和PhantomJS解析 前言 爬虫是信息搜集和数据挖掘的重要手段,而python作为目前应用范围最广的编程语言,也拥有非常丰富的爬虫套件。其中,Selenium和PhantomJS是两个非常重要的工具,本篇文章将详细介绍它们的使用方法。 Selenium简介 Selenium是一款用于Web应用程序测试的工具,它模拟了用…

    JavaScript 2023年6月11日
    00
  • javascript时区函数介绍

    JavaScript 时区函数介绍 什么是时区? 为了使世界上所有地区的时钟都是同步的,人们将地球分为24个时间区,每个时间区之间相差1小时。在不同的时区,同一时刻的时间是不同的。 时区函数 JavaScript 提供了一些时区函数,使得开发者可以对不同时区的日期和时间进行格式化和处理。 1. Date.prototype.toLocaleString() …

    JavaScript 2023年5月27日
    00
  • jquery validate和jquery form 插件组合实现验证表单后AJAX提交

    下面我将为您详细讲解如何使用jquery validate和jquery form插件完成验证表单后的AJAX提交。 步骤一:引入jQuery及相关插件 首先,在页面中引入jQuery和相关插件文件,这里需要演示的插件是jquery validate和jquery form,引用代码如下: <script src="https://code.…

    JavaScript 2023年6月10日
    00
  • JavaScript必知必会(九)function 说起 闭包问题

    下面是我对“JavaScript必知必会(九)function 说起 闭包问题”的完整攻略。 什么是闭包 闭包是指函数和函数所能访问的外部变量之间的关系。可以理解为,一个函数能够“记住”在它被定义时所处的环境。 一个闭包的形成,需要满足以下条件: 函数嵌套:在一个函数内定义了另一个函数。 内层函数使用了外部变量:内层函数使用了外部函数所定义的变量。 外部函数…

    JavaScript 2023年6月10日
    00
  • 7个令人惊讶的JavaScript特性详解

    7个令人惊讶的JavaScript特性详解 介绍 这篇文章将会介绍七个我们可能不知道或很少使用的有趣的JavaScript特性。这些特性可能会帮助你更好地理解JavaScript的本质以及如何更好地使用它。 1. 默认参数 默认参数允许我们在一个函数的参数列表中为某些参数定义默认值。如果没有传递值给这个参数,它将使用默认值。 function sayHell…

    JavaScript 2023年5月27日
    00
  • 如何动态加载外部Javascript文件

    动态加载外部 JavaScript 文件是指在页面运行时,通过 JavaScript 代码动态地向页面添加新的外部 JS 文件,并使其生效。这种方式可以提高页面的响应速度和减轻服务器压力,因为未使用的 JavaScript 代码不会提前加载,只有在需要时才被加载。 以下是实现动态加载外部 JavaScript 文件的完整攻略: 创建 <script&g…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部