一.函数介绍

  • Array.reduce()方法是对数组进行遍历,返回一个计算后的值

  • 使用方法:

Array.reduce((acc, cur, idx, src) => { }, initialValue)

  • callback回调函数接收4个参数:

    Accumulator (acc) (累计器) 如果传入了initialValue,Accumulator的初始值就是initialValue,没传入就是数组的第一个值

    Current Value (cur) (当前值)

    Current Index (idx) (当前索引)如果传入了initialValue,索引从0开始,没传入从1开始

    Source Array (src) (源数组)

initialValue 指定的初始值,初始值可以是数字,数组,对象

二.例子

2.1.数组求和

const arr = [1, 2, 3, 4, 5, 6];
let c = arr.reduce((a, b) => {
console.log(a, b);
return a + b;
});
console.log(c);

2.2.对象数组求和

const arr = [
{
name: '张三',
count: 1
},
{
name: '李四',
count: 2
},
{
name: '王五',
count: 3
},
{
name: '赵六',
count: 4
}
];
/**
* 对象数组求和
* pre:number
* cur:当前对象
* 最后的0:初始值
*/
const sum = arr.reduce((pre, cur) => {
console.log(pre, cur);
return pre + cur.count;
}, 0);
console.log(sum);

2.3.统计次数

/**
* 统计字母出现的个数
*/
let str = 'HelloWorld';
let arrStr = str.split('');
type TNumb = {
name: string;
count: number;
};
let arrFinal = arrStr.reduce((acc: TNumb[], cur: string): TNumb[] => {
let existItem = acc.find(it => it.name === cur);
if (!existItem) {
acc.push({ name: cur, count: 1 });
} else {
existItem.count++;
}
return acc;
}, []);
console.log(arrFinal);

2.4.求字符串数组中哪个出现的次数最多

let arr1 = ['李明', '韩梅梅', '张三', '李明', '李明', '张三', '韩梅梅', '李明', 'Jack', '韩梅梅'];
type TNumb = {
name: string;
count: number;
};
let arrFinal = arr1.reduce((acc: TNumb[], cur: string): TNumb[] => {
let existItem = acc.find(it => it.name === cur);
if (!existItem) {
acc.push({ name: cur, count: 1 });
} else {
existItem.count++;
}
return acc;
}, []);
console.log(arrFinal); let a = arrFinal.reduce((acc: TNumb, cur: TNumb) => {
return acc.count > cur.count ? acc : cur;
});
console.log(a); // 去重
let b = arrFinal.reduce((acc: string[], cur: TNumb) => {
if (!acc.includes(cur.name)) {
acc.push(cur.name);
}
return acc;
}, []);
console.log(b);

2.5.二维数组转一维数组

// 二维数组转一维数组
let numArr: number[][] = [];
numArr[0] = [1, 2, 3, 4];
numArr[1] = [5, 6, 7];
numArr[2] = [9, 10, 11];
let numArrNew = numArr.reduce((acc, cur) => {
return acc.concat(cur);
}, []);
console.log(numArrNew);

最新文章

  1. sql注入时易被忽略的语法技巧以及二次注入
  2. IOS系统基础知识
  3. 曲面之美:三星 S6 Edge+
  4. 使用ajaxfileupload.js实现文件上传
  5. HTML内联元素
  6. My Game --简介
  7. Spring源码学习之:@async 方法上添加该注解实现异步调用的原理
  8. 新浪微博客户端(31)-显示相册图片上的GIF标记
  9. winform中treeview中节点选中的技巧
  10. org.apache.ibatis.reflection.ReflectionException
  11. ubuntu 更新软件源
  12. 汇编学习笔记(3)[bx]和loop
  13. 判别linux机器字节序为大端还是小端
  14. Spring中配置数据源常用的形式
  15. 显存充足,但是却出现CUDA error:out of memory错误
  16. CentOS 7 输入中文 & 安装搜狗输入法
  17. 介绍一个axios调试好用的工具:axios-mock-adapter
  18. Spring注解之@Lazy注解
  19. android开发(42) 使用andorid操作蓝牙打印机
  20. Maven安装及MyEclipse中使用Maven

热门文章

  1. cannot import name 'detail_route' from 'rest_framework.decorators'的解决办法
  2. 1223. 掷骰子模拟 (Hard)
  3. django搭建简易blog
  4. css实现一个冰墩墩
  5. P1046 [NOIP2005 普及组] 陶陶摘苹果
  6. rtl8188eu 关闭power save
  7. span&不同字体
  8. CF1268B题解
  9. 新手入门Neo4j,手把手完整教学
  10. Rstudio 快捷键无法使用