使用reduce方法让代码倍加优雅
前言
在实际项目中,最常见可能是在计算、循环逻辑方面的处理,可以使用数组中
reduce
方法也可以解决很多的问题,使得你的代码风格更加优雅!
reduce语法
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数说明
reducer函数需要接收4个参数分别是
-
callback
-
Accumulator
- 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或
initialValue
。
- 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或
-
Current Value
- 数组中正在处理的元素。
-
Current Index
- 这是一个可选参数,数组中正在处理的当前元素的索引。 如果提供了
initialValue
,则起始索引号为0,否则从索引1起始。
- 这是一个可选参数,数组中正在处理的当前元素的索引。 如果提供了
-
Source Array
- 这是一个可选参数,调用
reduce()
的数组
- 这是一个可选参数,调用
-
-
initialValue
- 作为第一次调用
callback
函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
- 作为第一次调用
返回值
- 函数累计处理的结果
一些reduce常用方法
数组里所有元素的和
const arr = [1, 2, 3, 4];
const result = arr.reduce((acc, cur) => acc cur)
console.log(result) // 10
计算数组中每个元素出现的次数
const nums = ['1', '1', '1', '2', '3'];
const countednums = nums.reduce((acc, cur) => {
if (cur in acc) {
acc[cur] ;
}
else {
acc[cur] = 1;
}
return acc;
}, {});
console.log(countednums); // {1: 3, 2: 1, 3: 1}
扁平化数组
const arr = [['a', 'b'], ['b', 'c'], ['d', 'e']]
const flatten = arr => {
return arr.reduce((acc, cur) => {
return acc.concat(cur)
}, [])
}
console.log(flatten(arr)); // ["a", "b", "b", "c", "d", "e"]
数组去重
const arr = [22,341,124,54,4,21,4,4,1,4,4];
const result = arr.sort().reduce((acc, cur) => {
if(acc.length === 0 || acc[acc.length-1] !== cur) {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [1, 124, 21, 22, 341, 4, 54]
求数组中最大值
const arr = [1, 2, 3, 5, 1]
let result = arr.reduce((acc, cur) => Math.max(acc, cur))
console.log(result)
最后
本文分享了一些在日常开发中比较常用的一些reduce
处理方法,你可以直接拿到你的项目中使用,也可以进行二次封装。
😉 感谢您的阅读!希望对你日后开发有所帮助! 😉
\
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanekia
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24