当前位置: 首页 > news >正文

一文学会数组的reduce()和reduceRight()

reduce()方法和reduceRight()方法依次处理数组的每个成员,最终累计为一个值。
它们的差别是,reduce()是从左到右处理reduceRight()则是从右到左,其他完全一样。

[1, 2, 3, 4, 5].reduce(function (a, b) {console.log(a, b);return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15

上面代码中,reduce()方法用来求出数组所有成员的和。reduce()的参数是一个函数,数组每个成员都会依次执行这个函数。如果数组有 n 个成员,这个参数函数就会执行 n - 1 次。

  • 第一次执行:a是数组的第一个成员1,b是数组的第二个成员2。
  • 第二次执行:a为上一轮的返回值3,b为第三个成员3。
  • 第三次执行:a为上一轮的返回值6,b为第四个成员4。
  • 第四次执行:a为上一轮返回值10,b为第五个成员5。至此所有成员遍历完成,整个方法的返回值就是最后一轮的返回值15。

reduce()方法和reduceRight()方法的第一个参数都是一个函数。该函数接受以下四个参数

  1. 累积变量。第一次执行时,默认为数组的第一个成员;以后每次执行时,都是上一轮的返回值。
  2. 当前变量。第一次执行时,默认为数组的第二个成员;以后每次执行时,都是下一个成员。
  3. 当前位置。一个整数,表示第二个参数(当前变量)的位置,默认为1。
  4. 原数组。

这四个参数之中,只有前两个是必须的,后两个则是可选的。

[1, 2, 3, 4, 5].reduce(function (a,   // 累积变量,必须b,   // 当前变量,必须i,   // 当前位置,可选arr  // 原数组,可选
) {// ... ...

如果要对累积变量指定初值,可以把它放在reduce()方法和reduceRight()方法的第二个参数

[1, 2, 3, 4, 5].reduce(function (a, b) {return a + b;
}, 10);
// 25

上面代码指定参数a的初值为10,所以数组从10开始累加,最终结果为25。注意,这时b是从数组的第一个成员开始遍历,参数函数会执行5次。

建议总是加上第二个参数,这样比较符合直觉,每个数组成员都会依次执行reduce()方法的参数函数。

相关文章:

一文学会数组的reduce()和reduceRight()

reduce()方法和reduceRight()方法依次处理数组的每个成员,最终累计为一个值。 它们的差别是,reduce()是从左到右处理,reduceRight()则是从右到左,其他完全一样。 [1, 2, 3, 4, 5].reduce(function (a, b) {console.log(a, b);ret…...

登录校验-Filter

上一篇介绍完了基础应用和细节,现在来完成登录校验功能基本流程: 要进入后台管理系统,必须完成登录操作,此时就需要访问登录接口Login。登录成功服务端会生成一个JWT令牌,并且返回给前端,前端会将JWT令牌存…...

C C++ Java python 分别写出不同表白girlfriend的爱心动态代码实现

C `` #include <stdio.h> #include <stdlib.h> #include <windows.h> void heart_animation() {int i, j, k; for (i = 1; i <= 6; i++) {for (j = -3; j <= 3; j++) {for (k = -4; k <= 4; k++) {if (abs(j) + abs(k) < i * 2) {printf(“I”)…...

ThreeJS-投影、投影模糊(十七)

无投影&#xff1a; 完整的代码&#xff1a; <template> <div id"three_div"></div> </template> <script> import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/Or…...

蓝桥杯赛前冲刺-枚举暴力和排序专题1(包含历年蓝桥杯真题和AC代码)

目录 连号区间数&#xff08;第四届蓝桥杯省赛CB组,第四届蓝桥杯省赛JAVAB组&#xff09; 递增三元组&#xff08;第九届蓝桥杯省赛CB组,第九届蓝桥杯省赛JAVAB组&#xff09; 特别数的和&#xff08;第十届蓝桥杯省赛CB组,第十届蓝桥杯省赛JAVAB组&#xff09; 错误票据&a…...

Github库中的Languages显示与修改

目录 前言 【.gitattributes】文件 修改GitHub语言 前言 上传一个项目到GitHub时&#xff0c;发现显示的语言并非是自己项目所示的语言&#xff0c;这样的情况是经常发生的&#xff0c;为了能到达自己所需快速检索&#xff0c;或者是外部访问者能很好的搜索我们的项目&#…...

RocketMQ消息高可靠详解

文章目录 消息同步策略殊途同归同步基于offset而不是消息本身刷盘策略RocketMQ broker服务端以组为单位提供服务的,拥有着一样的brokerName则认为是一个组。其中brokerId=0的就是master,大于0的则为slave。 消息同步策略 master和slave都可以提供读服务,但是只有master允许…...

【python设计模式】4、建造者模式

哲学思想&#xff1a; 建造者模式的哲学思想是将复杂对象的创建过程分解成多个简单的步骤&#xff0c;并将这些步骤分别封装在一个独立的建造者类中。然后&#xff0c;我们可以使用一个指挥者类来控制建造者的调用顺序&#xff0c;以便在每个步骤完成后正确地构建复杂对象。 …...

【全网独家】华为OD机试Golang解题 - 机智的外卖员

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 如果想要在华为od机试中获取高分…...

Sentinel滑动时间窗限流算法原理及源码解析(中)

文章目录 MetricBucketMetricEvent数据统计的维度WindowWrap样本窗口实例 范型T为MetricBucket windowLengthInMs 样本窗口长度 windowStart 样本窗口的起始时间戳 value 当前样本窗口的统计数据 其类型为MetricBucket MetricBucket MetricEvent数据统计的维度 1、首先计算27t位…...

【OpenLayers】VUE+OpenLayers+ElementUI加载WMS地图服务

【OpenLayers】VUEOpenLayersElementUI加载WMS地图服务准备工作安装vue创建vue项目安装OpenLayers安装ElementUI加载wms地图服务准备工作 需要安装好nodejs&#xff0c;nodejs下载地址&#xff0c;下载对应的版本向导式安装即可。 安装完成后&#xff0c;控制台输入node -v&a…...

linux 命名管道 mkfifo

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理介绍 接口说明 代码演示 结尾 前言 本专栏主要分享linux下并发编程…...

Redis(主从复制、哨兵模式、集群)概述及部署

目录 1.redis高可用 2.redis持久化 1.Redis 提供两种方式进行持久化&#xff1a; 2.RDB 持久化 3.AOF持久化 4.RDB和AOF的优缺点 5.Redis 性能管理 3.redis主从复制 1.Redis主从复制的概念 2.Redis主从复制的作用 3.Redis主从复制的搭建 4.redis哨兵模式 1.哨兵模式…...

windows下软件包安装工具之Scoop安装与使用

Scoop介绍 Scoop是Windows的命令行程序安装器。 Scoop从命令行安装程序&#xff0c;及其容易。它有如下特点&#xff1a; 消除权限弹出窗口隐藏 GUI 向导样式的安装程序防止安装大量程序的 PATH 污染避免安装和卸载程序的意外副作用自动查找并安装依赖项自行执行所有额外的设…...

九龙证券|人工智能+国产软件+智慧城市概念股火了,欧洲资管巨头大举抄底

近一周组织调研个股数量有130多只&#xff0c;迈瑞医疗成为调研组织数量最多的股票。 证券时报数据宝统计&#xff0c;近一周组织调研公司数量有130多家。从调研组织类型来看&#xff0c;证券公司调研相对最广泛&#xff0c;调研80多家公司。 迈瑞医疗获超500家组织调研 迈瑞…...

Nacos下载安装与配置(windows)

一、Nacos下载 官网地址&#xff1a;home (nacos.io) 点击前往Github&#xff0c;跳转至Github下载页面。 点击Tags&#xff0c;跳转至版本选择页面&#xff0c;此处选择2.2.0版本。 点击nacos-server-2.2.0.zip&#xff0c;进行下载。 二、Nacos安装 将下载的压缩包解压至需…...

QT学习笔记(语音识别项目 )

语音识别项目 我们知道 AI 智能音箱已经在我们生活中不少见&#xff0c;也许我们都玩过&#xff0c;智能化非常高&#xff0c;功能 强大&#xff0c;与我们平常玩的那种蓝牙音箱&#xff0c;Wifi 音箱有很大的区别&#xff0c;AI 智能在哪里呢&#xff1f;语音识别技 术和云端…...

Vulnhub:DC-4靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.251 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.251 访问目标网站发现需要登录 使用账号admin爆破出密码&#xff1a;happy 登陆后抓包执行反弹shell 提权 在/home/jim/backu…...

序列差分练习题--从模板到灵活运用

本篇包含6道序列差分练习题及题解&#xff0c;难度由模板到提高 语文成绩 题目背景 语文考试结束了&#xff0c;成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩&#xff0c;所以当她修改成绩的时候&#xff0c;总是累得不行。她总是要一遍遍地给某些同学增加分…...

Xshell 连接 Ubuntu 20.04

1 更改网络配置信息 修改/etc/netplan/01-network-manager-all.yaml文件信息 sudo gedit /etc/netplan/01-network-manager-all.yaml删除原有内容&#xff0c;替换为以下信息&#xff1a; 注意&#xff1a;addresses、gateway4 要根据个人虚拟机的实际情况修改 # Let Networ…...

WSABuilds系统调用:Windows与Android内核交互机制解析

WSABuilds系统调用&#xff1a;Windows与Android内核交互机制解析 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root sol…...

【开发工具】Trae IDE 解决 Windows 下 C 工程无法跳转定义问题

1. 概要 &#x1f44b; 作为 Trae IDE 使用者&#xff0c;在 Windows 环境打开本地 C 工程时&#xff0c;习惯用 Ctrl 鼠标左键 快速跳转函数 / 变量定义却失效&#xff0c;仅能做文本匹配&#xff0c;无法精准定位语义定义。核心原因是 Trae 依赖 LSP&#xff08;语言服务器协…...

22:L应用区块链+AI:蓝队的分布式安全

作者&#xff1a; HOS(安全风信子) 日期&#xff1a; 2026-03-19 主要来源平台&#xff1a; GitHub 摘要&#xff1a; 区块链的不可篡改特性与AI的智能分析能力相结合&#xff0c;为蓝队防御带来了新的可能性。L深入研究区块链AI的融合应用&#xff0c;构建了一个分布式、透明、…...

解锁汽车ECU诊断新可能:ECUBus-Pro开源工具的全场景应用指南

解锁汽车ECU诊断新可能&#xff1a;ECUBus-Pro开源工具的全场景应用指南 【免费下载链接】ECUBus ECU bus tool, UDS over CAN, CAN-FD, Ethernet and so on. 项目地址: https://gitcode.com/gh_mirrors/ec/ECUBus ECUBus-Pro是一款功能强大的开源汽车ECU开发工具&#…...

OpenAI Agent SDK实战:5分钟搞定MCP协议接入(附完整代码)

OpenAI Agent SDK与MCP协议深度整合实战指南 在当今AI技术快速迭代的背景下&#xff0c;工具链的标准化与互操作性成为开发者面临的核心挑战之一。OpenAI推出的Agent SDK与MCP协议组合&#xff0c;为构建可扩展的智能体系统提供了工业级解决方案。本文将带您从零开始&#xff0…...

Ubuntu 24.04镜像源配置全攻略:从原理到实战(含常见报错解决)

Ubuntu 24.04镜像源深度解析与高效配置实战 最近在帮朋友配置新装的Ubuntu 24.04时&#xff0c;发现这个版本在软件源管理上做了重大调整——从传统的sources.list文件变成了结构化更强的sources.d目录配置方式。这个变化让不少习惯了旧版本的用户感到困惑&#xff0c;也让我意…...

OpenClaw+GLM-4.7-Flash:智能爬虫与数据分析

OpenClawGLM-4.7-Flash&#xff1a;智能爬虫与数据分析 1. 为什么需要智能爬虫与数据分析 最近我在做一个小型竞品分析项目时&#xff0c;遇到了一个典型的数据收集困境&#xff1a;需要从20多个竞品网站抓取产品功能描述、定价策略和用户评价&#xff0c;然后整理成结构化数…...

Otter模型对比学习:提升跨模态表示质量的技术方案

Otter模型对比学习&#xff1a;提升跨模态表示质量的技术方案 【免费下载链接】Otter &#x1f9a6; Otter, a multi-modal model based on OpenFlamingo (open-sourced version of DeepMinds Flamingo), trained on MIMIC-IT and showcasing improved instruction-following a…...

论文省心了!2026 最新降AI率工具测评与推荐

2026年真正好用的AI论文降重与改写工具&#xff0c;核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

WarcraftHelper:魔兽争霸3现代兼容性解决方案,让你的经典游戏焕发新生

WarcraftHelper&#xff1a;魔兽争霸3现代兼容性解决方案&#xff0c;让你的经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸…...