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

yizhihongxing

当我们在开发 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日

相关文章

  • 解决ie img标签内存泄漏的问题

    解决IE浏览器中img标签内存泄漏问题,需要遵循以下三个步骤: 1. 使用JavaScript动态创建img元素 在IE浏览器中,使用img标签将图片插入到HTML文档中时,需要先在浏览器缓存中将图片缓存下来,而当img被移除时,缓存并不会被自动清除,会导致内存泄漏。 来自IBM的一篇文章提出了使用JavaScript动态创建img元素的方案,可以避免该问题…

    JavaScript 2023年6月10日
    00
  • Javascript Math max() 方法

    JavaScript中的Math.max()方法是用于返回一组数中的最大值的函数。以下是关于Math.max()方法的完整攻略,包含两个示例。 JavaScript Math对象的max()方法 JavaScript Math中的max()方法用于返回一数中的最大值。下面是max()方法的语法: Math.max([value1[,2[, …]]]) 其…

    JavaScript 2023年5月11日
    00
  • javascript实现dom元素可拖动

    要实现DOM元素可拖动,需要以下步骤: 给目标元素添加mousedown事件监听器,当鼠标按下时触发事件,并将鼠标在元素上的位置信息存储起来。 给document对象添加mousemove事件监听器,当鼠标移动时触发事件,并计算出移动的距离。 在mousemove事件中,根据鼠标移动的距离,重新设置目标元素的位置。 当鼠标松开时,移除事件监听器。 以下是实现…

    JavaScript 2023年6月10日
    00
  • 动态加载、移除js/css文件的示例代码

    动态加载、移除js/css文件是Web前端开发中常用的技术。通过动态加载js/css文件,可以在页面运行时动态地添加、更新或移除应用中的样式和脚本。 以下是动态加载、移除js/css文件的示例代码攻略: 动态加载js文件 动态加载js文件可以通过创建script标签并将其添加到文档中来实现。下面是一个简单的示例代码: function loadJS(url,…

    JavaScript 2023年5月27日
    00
  • threeJs实现波纹扩散及光标浮动效果详解

    Three.js实现波纹扩散及光标浮动效果详解 概述 本教程将介绍如何使用Three.js库实现波纹扩散效果及光标浮动效果。波纹扩散效果常见于网页设计中,而光标浮动效果则经常出现在用户交互的UI设计中。 本文主要分为以下三个部分: 前置知识 波纹扩散效果实现 光标浮动效果实现 本文中的所有代码都可在 codepen 中找到。 一、前置知识 要实现本教程中的效…

    JavaScript 2023年6月11日
    00
  • JavaScript中iframe实现局部刷新的几种方法汇总

    JavaScript中iframe实现局部刷新的几种方法汇总 简介 iFrame 是HTML中的一种标记,可以使网页中嵌套其他网页。iFrame 的应用非常广泛,可以用于实现局部刷新,即只刷新部分页面的内容,而不用刷新整个页面。这对于提高网站加载速度和用户体验非常有帮助。本文将介绍几种方法来实现iFrame的局部刷新。 方法一:修改iFrame src属性 …

    JavaScript 2023年6月10日
    00
  • js关于getImageData跨域问题的解决方法

    关于getImageData跨域问题的解决方法相信很多前端开发者都会遇到,在此我将提供两条解决方案供大家参考。 解决方案一:使用CORS解决跨域 CORS是跨域资源共享,它是HTML5加入的新特性,相比其他解决跨域问题的方式而言更为简单便捷,同样也能很好地解决getImageData的跨域问题。 具体的实现需要服务端配合,在服务端的响应头中设置Access-…

    JavaScript 2023年6月11日
    00
  • JavaScript实现时钟特效

    以下是详细的JavaScript实现时钟特效的攻略,希望可以对您有帮助。 1. 准备工作 在开始制作JavaScript时钟特效之前,需要先做一些准备工作。包括HTML代码及CSS样式的编写。根据设计需求,制作一个表盘,盘面可以是圆形的或者其他形状。然后在表盘上加上时针、分针、秒针等元素,并通过CSS样式进行美化。 以下是制作样本的HTML代码示例: &lt…

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