网购网站建设百度统计
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;