JavaScript reduce和reduceRight详解

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日

相关文章

  • 当json键为数字时的取值方法解析

    当JSON的键为数字时,我们可以使用以下三种方式来取值: 方式一:使用点号加双引号,将数字键转换成字符串来访问。 例如,在下面的JSON数据中,键名为数字1和2: { "1": "Apple", "2": "Banana" } 我们可以通过以下方式访问它们: – Apple可以这…

    JavaScript 2023年5月27日
    00
  • JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例

    下面我将详细讲解JavaScript处理HTML事件、键盘事件、鼠标事件的攻略,包括基础概念、代码实现和示例说明。 HTML事件 基础概念 HTML事件是页面元素在浏览器中发生的特定操作,如点击、鼠标移动、键盘按下等。在JavaScript中,我们可以通过事件驱动来实现对HTML事件的处理。 代码实现 // 获取对应元素 var ele = document…

    JavaScript 2023年6月11日
    00
  • 在模板页面的js使用办法

    在模板页面,我们可以使用JavaScript来通过DOM操作实现动态效果,或者向后台发送请求获取数据等。下面是在模板页面中使用JavaScript的攻略: 1. 引入JavaScript文件 在模板页面中使用JavaScript需要引入对应的JavaScript文件。可以使用script标签来引入,如下所示: <script src="js/…

    JavaScript 2023年6月11日
    00
  • Javascript迭代、递推、穷举、递归常用算法实例讲解

    Javascript 迭代、递推、穷举、递归常用算法实例讲解 在Javascript编程中,经常需要使用迭代、递推、穷举、递归等算法来解决问题。下面将分别介绍这几种算法,并结合示例说明。 迭代算法 迭代算法顾名思义就是一种重复执行某种操作的算法,通常采用循环结构实现。迭代算法的最大优点就是效率高,但需要注意边界条件的控制。 下面是一个求阶乘的迭代算法示例: …

    JavaScript 2023年5月27日
    00
  • JavaScript判断一个字符串是否包含指定子字符串的方法

    JavaScript提供了多种方法来判断一个字符串是否包含指定的子字符串。在下面的介绍中,将逐一介绍这些方法并附带示例说明。 方法一:使用indexOf方法 JavaScript中的字符串对象提供了一个indexOf方法,该方法可以用于判断一个字符串是否包含指定的子字符串。该方法返回一个数字值,表示指定的子字符串在原字符串中第一次出现的位置。如果未找到该子字…

    JavaScript 2023年5月28日
    00
  • JavaScript实现按键精灵的原理分析

    JavaScript实现按键精灵的原理分析 按键精灵是一种自动化测试工具,可以通过记录和回放用户在网页上的操作,以缩短测试时间和提高测试效率。JavaScript可以实现按键精灵的功能,下面是具体的攻略。 一、原理分析 按键精灵的功能实现主要需要以下三个步骤: 记录用户的操作。当用户在网页上进行操作时,通过JavaScript代码记录下来,包括点击、输入和滚…

    JavaScript 2023年6月11日
    00
  • vue中的attribute和property的具体使用及区别

    Vue中Attribute和Property的使用及区别 在Vue中,我们经常使用Attribute和Property来设置或获取元素的属性值,这两者是有区别的。在本文中,我们将会详细讲解它们的用法及区别。 Attribute和Property的区别 首先,我们需要明确Attribute和Property的区别。简单来说,Attribute是在HTML中定义…

    JavaScript 2023年6月10日
    00
  • JavaScript获得url查询参数的方法

    当我们需要获取当前页面URL中的查询参数时,可以使用JavaScript代码来完成这一任务。获取URL查询参数的方法主要分为两种,分别是使用正则表达式和URLSearchParams对象。 使用正则表达式获取URL查询参数 使用正则表达式来获取URL查询参数,可以通过对当前URL使用方法location.search来获得查询参数,然后使用正则表达式来解析得…

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