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

ts:数组的常用方法(reduce累加)

ts:数组的常用方法(reduce累加)

  • 一、主要内容说明
  • 二、例子
    • reduce方法(累加)
      • 1.源码1 (reduce方法)
      • 2.源码1运行效果
  • 三、结语
  • 四、定位日期

一、主要内容说明

ts中数组的reduce方法,用于数组元素的累加。reduce方法可设置的5个参数如下:

let arr:string[];
let new_arr=arr.reduce((A,B,C,D),E);A----累加值,保存上一次调用回调函数的返回值,或初始值B----当前正在处理的数组中的某个元素C----(可选)当前处理的数组元素的索引C----(可选)源数组E----(可选)初始值,可自行设置的初始值参数,若没有设置以数组中的第一个元素为初始值。

一般情况下我们只用到A和B这两个参数。使用箭头函数,输入A、B对象,对A、B对象进行函数逻辑变换,若求总和值,可如下设置:

let arr:string[];
let new_arr=arr.reduce((A,B)=>A+B,10);

A是不断累加的总和,B为当前运行排到的元素。上例我们设置的初始值为10,那么第一轮的总和数值为 (A1=10)+B1,这个值就会累加到A上。到了第二轮,那么就是A2=[(A1=10)+B1]+B2,以此类推A可以累加输出所有的数值。初始值为自己设置和数组元素类型相同的参数,也可不设置,而默认选用数组第一个元素的值。reduce方法和下边循环累加逻辑思想很相似。

let sum = 0;
for (i = 0; i < 10; i++) {sum = sum + i;}

二、例子

reduce方法(累加)

当数组中的元素为number一类,我们可以用reduce累加元素数值。若原数组为string字符串类型,用reduce累加,则会使原数组中的各个小字符串元素合并成为一个大的字符串。也可以使用对其他类型的对象函数中的某些值进行累加。

1.源码1 (reduce方法)

// 数字数组
// 数字数组
const numbers: number[] = [764, 765, 766, 767];// 使用 reduce 计算数组中所有数字的总和,未设置初始值
const sum_1 = numbers.reduce((A, B) => A + B);
console.log(sum_1); // 输出:3062// 使用 reduce 计算数组中所有数字的总和,并设置初始值为 1000000
const sum_2 = numbers.reduce((sum, num) => sum + num, 1000000);
console.log(sum_2); // 输出:1003062console.log(`\n分隔行------------------------------\n`);// 字符串数组
const str: string[] = ["元素1", "元素2", "元素3", "元素4", "元素5", "元素6"];// 使用 reduce 连接字符串,并设置初始值
const sum_3 = str.reduce((A, B) => A + "--" + B, "如果设置起始元素:");
console.log(sum_3); // 输出:如果设置起始元素:元素1--元素2--元素3--元素4--元素5--元素6
console.log("原数组:" + str);// 原数组console.log(`\n分隔行------------------------------\n`);// 定义 Message 接口
interface Message {name: string;num: number;
}// 消息数组
const mes: Message[] = [{ name: "桃子", num: 764 },{ name: "苹果", num: 765 },{ name: "猕猴桃", num: 766 },{ name: "西瓜", num: 767 }
];// 使用 reduce 计算水果数量总和,初始值为 0
const mes_2 = mes.reduce((sum, message) => sum + message.num, 0); // 从 0 开始累加数量// 输出结果
console.log("所有水果总和:" + mes_2); // 输出:所有水果总和:3062

2.源码1运行效果

在这里插入图片描述

三、结语

每日过一遍学过的内容,写下学过方面的知识,印象也会深些。其实不是很难的内容,但为啥完成一篇博文也会花费许多时间,搞不明白。
类class的简单创建已经简单过一遍,类里面的对象变量,可设置为公共、私有等的内容,还有继承和public静态类的设置。其实可选内容也挺多,但有时候也难以下手编写。总之,加油吧!
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

四、定位日期

2024:10:28;
21:20;

http://www.lryc.cn/news/470991.html

相关文章:

  • Begin
  • 【实战案例】Django框架表单处理及数据库交互
  • python开发工具是选择vscode还是pycharm?两款软件优缺点对照!
  • 2025选题|基于Hadoop的物品租赁系统的设计与实现
  • 【Qt】QTableView添加下拉框过滤条件
  • 部署DNS主从服务器
  • 从可逆计算看低代码
  • 设计模式最佳实践代码总结 - 结构型设计模式篇 - 侨接设计模式最佳实践
  • 【软件测试】python——Unittest
  • Maven:详解 clean 和 install 命令的使用
  • HTTP与RPC
  • 解决蓝牙键盘按键错乱的问题
  • MiL.k X Biggie 奇妙宇宙来袭!
  • 云服务器中删除非空目录(包含文件和子目录)rm -rf <directory_name>
  • 1991-2024年经管类国自然、国社科立项名单(附68份国自然标书)-最新出炉 附下载链接
  • Flutter问题记录 - 布局中莫名其妙的白线/缝隙
  • 从零学习大模型(七)-----LoRA(中)
  • Java知识巩固(十二)
  • 一家光伏企业终止,恐不具行业代表性,市占率仅为2.35%
  • 企业计算机监控软件是什么?6款电脑监控软件分享!提升企业管理效率,吐血推荐!
  • VisionPro —— CogOCRMaxTool工具详解
  • 网站安全问题都有哪些,分别详细说明
  • DiskGenius一键修复磁盘损坏
  • Matlab实现鼠群优化算法优化回声状态网络模型 (ROS-ESN)(附源码)
  • nfs作业
  • Linux 基础io_理解文件系统_软硬链接_动静态库
  • 大语言模型参数传递、model 构建与tokenizer构建(基于llama3模型)
  • 使用 `screen` + `nohup` 实现高效日志记录和多环境任务管理
  • 【探索数字孪生,引领未来技术】
  • Tcp_Sever(线程池版本的 TCP 服务器)