JavaScript reduce和reduceRight详解

yizhihongxing

JavaScript reduce和reduceRight详解

什么是reduce方法?

reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个元素从左到右依次调用该函数,并将累加器的返回值作为下一次调用该函数的参数。最终将返回累加器的最终值。

reduce() 可以实现一些非常复杂的累计逻辑,但它也是一个非常复杂的方法,需要花费一些时间和精力来理解。在这篇文章中,我们将展示一些使用 reduce() 的示例,以帮助你更好地理解它的工作原理。

reduce基本语法

array.reduce(function(total,currentValue,currentIndex,arr), initialValue)

参数说明

  • function(total,currentValue,currentIndex,arr):必需,用于执行每个数组元素的函数。常用的参数有:

  • total:必需,初始值,或者计算结束时的返回值。

  • currentValue:必需,当前元素。
  • currentIndex:可选,当前元素的索引。
  • arr:可选,当前数组对象。

  • initialValue:可选,传递给函数的初始值。如果没有提供初始值,则使用数组中的第一个元素作为初始值。

reduce方法有两种不同的使用方式

I. reduce()

以从左到右的顺序迭代数组元素,例如:

const numbers = [1,2,3,4,5]
const sum = numbers.reduce((total, num) => total + num)
console.log(sum) // 15

在这个例子中,我们使用 reduce() 方法从最左边的元素开始累加数组中的元素。

II. reduceRight()

从右侧的第一个元素开始,反向迭代数组元素,例如:

const numbers = [1,2,3,4,5]
const sum = numbers.reduceRight((total, num) => total + num)
console.log(sum) // 15

在这个例子中,我们使用 reduceRight() 方法从最右边的元素开始累加数组中的元素。

reduce方法示例

示例一:计算平均值

const numbers = [1,2,3,4,5]
const total = numbers.reduce((acc, num) => acc + num) // 总和
const avg = total / numbers.length // 平均值
console.log(avg) // 3

在本例中,我们首先使用 reduce() 方法计算数组中所有元素的总和。然后,我们将总和除以数组的长度来计算平均值。

示例二:扁平化嵌套数组

const nestedArray = [[1,2], [3,4], [5,6]]
const flattenedArray = nestedArray.reduce((acc, arr) => acc.concat(arr), [])
console.log(flattenedArray) // [1,2,3,4,5,6]

在这个例子中,我们使用 reduce() 方法将嵌套数组打平为一个简单的一维数组。我们传递一个空数组作为 reduce() 方法的初始值,然后在每次迭代中使用 concat() 方法去连接当前迭代的数组,最终得到扁平化后的数组。

reduceRight方法示例:

示例一:反转字符串

const str = 'example string'
const reversedStr = str.split('').reduceRight((acc, char) => acc + char, '')
console.log(reversedStr) // gnirts elpmaxe

在这个例子中,我们使用 reduceRight() 方法将字符串反向。我们首先使用 split('') 方法将字符串转换为字符数组,然后使用 reduceRight() 方法将字符数组反转。我们传递一个空字符串作为 reduceRight() 方法的初始值,然后在每次迭代中将当前字符连接到累加器的后面。

示例二:鉴别回文字符串

const str = 'dad'
const isPalindrome = str
    .split('')
    .reduceRight((acc, char, idx) => {
        if (char === str[idx]) {
            return acc
        } else {
            return false
        }
    }, true)
console.log(isPalindrome) // true

在本例中,我们使用 reduceRight() 方法来测试一个字符串是否为回文字符串。我们从字符串的右侧开始迭代,依次比较当前字符和对称位置的字符是否相等。如果每一组字符都相等,则返回 true;否则返回 false

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript reduce和reduceRight详解 - Python技术站

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

相关文章

  • 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作

    让我为您详细讲解“基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作”的完整攻略。 Mutation Observer 介绍 Mutation Observer 是 HTML5 新增的一种 DOM 监听方法,可以用来监听 DOM 树的变化。它可以监听某个 DOM 节点及其所有子节点树上的任何 DOM 改变,并可以配置响应相应的变…

    JavaScript 2023年6月11日
    00
  • JavaScript中的稀疏数组与密集数组[译]

    JavaScript中的数组可以是密集的,也可以是稀疏的。密集数组即为连续的数组元素,稀疏数组表示有些元素被省略了。本文将详细讲解JavaScript中稀疏数组和密集数组的概念和行为。 什么是稀疏数组? 稀疏数组是指数组元素具有不连续性,或者说中间有空洞的数组。在稀疏数组中,一些元素是不存在的,我们可以用下标访问到的元素即表示存在的,没法访问到的元素则被视为…

    JavaScript 2023年5月27日
    00
  • layui表单验证select下拉框实现验证的方法

    下面是关于“layui表单验证select下拉框实现验证的方法”的详细攻略。 步骤一:引入layui表单模块 首先我们需要引入layui表单模块,因为它包含了表单验证的相关功能。我们可以将下面的代码加入到html文件中: <link rel="stylesheet" href="/layui/css/layui.css&q…

    JavaScript 2023年6月10日
    00
  • JavaScript中setTimeout()的具体用法

    当我们需要在一段时间之后执行一些代码时,就可以使用JavaScript中的setTimeout()函数。setTimeout()在指定时间段后会执行一段代码。以下是setTimeout()函数的语法: setTimeout(function, milliseconds, param1, param2, …) 其中,第一个参数为需要执行的函数,第二个参数为…

    JavaScript 2023年6月10日
    00
  • Javascript怎样使用SessionStorage和LocalStorage

    使用SessionStorage和LocalStorage可以在客户端存储、读取数据,从而实现一些常见的功能,例如用户登录状态的保持、表单数据的保存等等。SessionStorage一般用于临时保存会话数据,当用户关闭浏览器时会被清除;而LocalStorage可以长期存储,直到用户手动删除或者浏览器清除缓存。 SessionStorage的使用 存储数据 …

    JavaScript 2023年6月11日
    00
  • JavaScript门道之标准库

    JavaScript 标准库是指由 ECMAScript 提供的可在 Web 应用程序中直接使用的库。它包含一组全局对象,例如 Object,Array,Date 和 Error,并提供了一组通用的函数,例如 parseInt 和 parseFloat 等。JavaScript 标准库是在 JavaScript 运行时环境中自动加载的,因此不需要额外下载或引…

    JavaScript 2023年5月19日
    00
  • 一篇文章弄懂js中的typeof用法

    一篇文章弄懂 JS 中的 typeof 用法 typeof 是 JavaScript 中的一个关键字,用于确定一个值的数据类型。如今,在 JavaScript 中,由于一些语言习惯的原因,被称为“类型”或“类型操作符”。了解 typeof 的使用方法对于学习和理解 JavaScript 语言非常重要。 使用 typeof 的基本语法 语法:typeof op…

    JavaScript 2023年6月11日
    00
  • js与jquery回车提交的方法

    下面详细讲解js与jQuery回车提交的方法的完整攻略。 什么是回车提交 回车提交是指用户在输入框内输入内容后按下键盘上的回车键,就会自动提交表单或执行相应的操作,而不需要再点击提交按钮。在表单或查询页面中,这是一种很方便的操作方式。 JavaScript回车提交 Javascript可以通过监听页面上的键盘操作,并且每次键盘按下事件被触发时执行代码。利用这…

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