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日

相关文章

  • 原生JS实现简单的倒计时功能示例

    下面我将详细讲解如何使用原生JS实现简单的倒计时功能。 编写HTML结构 首先,我们需要在HTML页面中创建一个倒计时的容器,可以使用<div>元素,并为其设置id属性,便于在JavaScript中操作。 <div id="countdown"></div> 编写JavaScript代码 接下来,我们使…

    JavaScript 2023年5月27日
    00
  • PHP实现把文本中的URL转换为链接的auolink()函数分享

    当我们在编写一些包含URL的文本内容时,我们经常需要把这些URL转换为超链接,以便用户可以直接点击链接访问网页。在PHP中,可以使用autolink()函数来实现这个功能。 以下是实现该功能的步骤: 1. 利用正则表达式匹配URL 我们需要使用一个正则表达式来匹配一个可能包含URL的文本,并将URL提取出来。以下是示例代码: function autolin…

    JavaScript 2023年6月11日
    00
  • 解析页面加载与js函数的执行 onload or ready

    解析页面加载与js函数的执行 onload or ready 页面加载过程 当浏览器加载一个页面时,会按照以下步骤逐步完成页面的加载: 浏览器通过DNS解析获取目标网站的IP地址 浏览器向服务器发出请求,获取HTML文件 浏览器开始解析HTML,构建DOM树 遇到CSS和JS文件时,浏览器会解析它们,并执行其中的代码 解析完成后,浏览器构建出渲染树 渲染树和…

    JavaScript 2023年6月11日
    00
  • JQuery包裹DOM节点的方法

    JQuery中提供了多种方法来包裹DOM节点,可以根据实际需求选择适合的方法。下面是其中四种方法的详细说明: .wrap() .wrap() 方法将每个被选元素都包裹在指定的单个元素中。被选元素保留其原来的位置,只是被一个外层元素包裹起来。例如: <div class="wrapper"> <p>这是一段文本&lt…

    JavaScript 2023年6月10日
    00
  • js二维数组定义和初始化的三种方法总结

    这里是对于 “JS二维数组定义和初始化的三种方法总结” 的详细讲解: 一、什么是二维数组? 在 Javascript 中,二维数组其实是由多个一维数组组成的,也就是一个二维数组在本质上就是一个由多个一维数组组成的数组。它可以被看做是一个表格,其中每个元素由两个索引来确定,一个用于确定行,一个用于确定列。 二、具体的三种定义和初始化方式 1. 使用数组字面量的…

    JavaScript 2023年5月27日
    00
  • Vue 项目迁移 React 路由部分经验分享

    下面详细讲解“Vue 项目迁移 React 路由部分经验分享”的完整攻略。 背景 在项目开发中,React 和 Vue 是两个非常常用的框架,在实际开发中,可能需要将一个 Vue 项目迁移到 React 项目中,其中涉及到路由部分,如何进行迁移呢?下面给出一些经验分享。 步骤 确定 React 项目结构 建议先熟悉一下 React 项目的结构,确定 Reac…

    JavaScript 2023年6月11日
    00
  • WebGL 多重纹理的使用介绍

    请听我详细介绍“WebGL 多重纹理的使用介绍”的攻略。 简介 WebGL 多重纹理是用于在 WebGL 应用程序中使用多个纹理的技术。通过多重纹理,可以在同一对象上一次性使用多个纹理图像,并在每个图像之间进行混合或叠加。这为绘制更逼真的 3D 场景提供了更多的灵活性和可能性。 多重纹理的基本概念 在 WebGL 中,多重纹理主要涉及两个核心概念:纹理单元和…

    JavaScript 2023年6月11日
    00
  • JS正则表达式一条龙讲解(从原理和语法到JS正则)

    “JS正则表达式一条龙讲解(从原理和语法到JS正则)”是一篇全面讲述JavaScript正则表达式的文章。下面将从几个方面介绍该文章的内容: 文章结构 该文章主要分为以下几个部分: 正则表达式概述 该部分简单介绍了正则表达式的定义、应用场景和组成部分。 正则表达式语法 该部分详细讲解了正则表达式语法中的各个符号和正则表达式的组合方式。其中涉及到元字符、字符类…

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