首页 > 编程语言 >JavaScript数组的reduce()方法

JavaScript数组的reduce()方法

时间:2022-11-05 01:22:05浏览次数:72  
标签:arr console cur JavaScript reduce let 数组 prev

参考文章:
Array.prototype.reduce() —— MDN

一、介绍

reduce() 方法对数组中的每个元素按顺序执行一个由您提供的 reducer 函数, 每一次运行 reducer 都会将先前元素的计算结果作为参数传入, 最后将结果 汇总为单个返回值

注意: reduce() 对于空数组是不会执行回调函数的.

二、语法

array.reduce( function(total, currentValue [, currentIndex, arr ]) [, initialValue ] )
参数 描述
function(total, currentValue, currentIndex, arr) 必需, 用于执行每个数组元素的 'reducer' 函数
initialValue 可选, 第一次调用函数的初始值
函数参数 描述
total 必需, 初始值, 或者计算结束后的返回值
currentValue 必需, 当前元素
currentIndex 可选, 当前元素的索引
arr 可选, 当前元素的数组对象

三、使用

3.1. 简单求和

let arr = [1, 2, 3, 4, 5]

let sum1 = arr.reduce(function(prev, cur) {
    return prev + cur
})

// 使用箭头函数优化

let sum2 = arr.reduce((prev, cur) => prev + cur)
console.log(sum1, sum2) // 15 15

3.2. 带初始值求和

let arr = [1, 2, 3, 4, 5]

let sum1 = arr.reduce(function(prev, cur) {
    return prev + cur
}, 99)

// 使用箭头函数的写法:

let sum2 = arr.reduce((prev, cur) => prev + cur, 99)
console.log(sum1, sum2) // 114 114

3.3. 计算每个元素出现次数

let arr = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']

let arrResult = arr.reduce((pre, cur) => {
    if (cur in pre) {
        pre[cur]++
    } else {
        pre[cur] = 1
    }

    return pre
}, {})
console.log(arrResult)
// { Alice: 2, Bob: 1, Tiff: 1, Bruce: 1 }

3.4. 扁平化数组

let arr = [
    [1, 2],
    [3, 4], 5,
    [6, 7],
]

let newArr1 = arr.reduce(function(prev, cur) {
    return prev.concat(cur)
}, [])
console.log(newArr1) // [ 1, 2, 3, 4, 5, 6, 7]

// 使用箭头函数的写法:

let newArr2 = arr.reduce((prev, cur) => prev.concat(cur), [])
console.log(newArr2) // [ 1, 2, 3, 4, 5, 6, 7]

3.5. 数组去重

let arr = ['a', 'b', 'a', 'b', 'c', 'e', 'e', 'c', 'd', 'd', 'd', 'd']

let newArr = arr.reduce((prev, cur) => {
    if (prev.indexOf(cur) === -1) {
        prev.push(cur)
    }

    return prev
}, [])

console.log(newArr) //  [ 'a', 'b', 'c', 'e', 'd' ]

标签:arr,console,cur,JavaScript,reduce,let,数组,prev
From: https://www.cnblogs.com/bkzj/p/16859553.html

相关文章

  • 原生javascript点击获取table表格数据
    1.ajax获取List数据xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4&&xmlHttp.status==200){letreturnVal......
  • 使用递归获取数组最大值。(有图)
    packageclass03;importjava.util.Arrays;/***使用递归获取数组最大值*只是用这个获取数组最大值的例子,来理解递归。*/publicclassCode08_GetMax{p......
  • 1 JavaScript作用、功能和发展史
    文章目录​​前言​​​​1JavaScript基本介绍​​​​2JavaScript当前作用​​​​3JavaScript结构组成​​​​4JavaScript语言特点​​​​结语​​前言......
  • JavaScript(一)
    五大主流浏览器及其内核浏览器内核chromewebkitblinksafariwebkitfirefoxgeckooperaprestoIEtrident浏览器的历史JavaScript的目的就是......
  • 实现数组扁平化的方法
    数组扁平化ES6新增的flat方法Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该方法返回一个新数组,对原数据没有影响。[1,2,[3,4]].flat()//[1,2,3,4......
  • javascript_snake
    html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content=......
  • L - Fenwick Tree Gym - 103861L(打表,树状数组)
    题意:一开始数组的每个数都是零对于每次操作:可以对一个数加上一个实数在加上实数的同时,对应的i+lowbit(i)一直到<=n都会加上这个实数不同操作可以加上不同的实......
  • JavaScript中的Pipe
    JavaScript中的Pipe本文会介绍Pipe在函数式编程中的基本概念,怎么用Pipe让我们的代码变得更美好,以及新的pipe操作符,Fancy的东西在后面!什么是Pipe?先用一个最简单的例子来看......
  • javascript - 练习题:自定义typeof / 数组去重
    自定义typeof函数为啥要自定义typeof,因为 引用值 会被typeof 输出为object。 换句话说:typeof 不能区分 引用值(数组、对象和包装类)的具体类型;typeof 本身是可......
  • 求连续数组中唯一重复的值-Java
    1-1000中放在含有1001个元素的数组中,只有唯一的一个元素重复,其他均只出现一次.设计一个算法,将它找出来四种方法来求解该题数组排序法先将数组排序,当相邻两个值相等时,......