reduce方法的使用
方法 使用 reduce
2023-06-13 09:18:28 时间
认识reduce 语法:
arr.reduce(callbackFn,[initialValue])
callbackFn : 一个 “reducer” 函数,包含四个参数:
- previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]
- currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。
- currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
- [ initialValue] 可选 作为第一次调用 callback 函数时参数 previousValue 的值。
- 若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;
- 否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。 array:用于遍历的数组。
数组求和,求乘积
const arr = [1, 2, 3, 4]
// 累加
const sum = arr.reduce((prev, curr) => prev + curr)
console.log(sum)
// 累乘
const mul = arr.reduce((prev, curr) => prev * curr)
console.log(mul)
计算数组元素出现的次数
const arr = [1, 2, 2, 3, 4, 5, 4, 4, 1]
const arrNum = arr.reduce((prev, curr) => {
if (curr in prev) {
prev[curr]++
} else {
prev[curr] = 1
}
return prev
}, {}) // prev的初始值是一个空对象,将数组元素作为对象的属性名传入
console.log(arrNum)
数组去重
const arr = [1, 2, 2, 3, 4, 5, 4, 4, 1]
const newArr = arr.reduce((prev, curr) => {
if (!prev.includes(curr)) {
// prev的初始值是一个空数组,判断如果这个新数组中不包含原数组的元素时
prev.push(curr)
}
return prev
}, [])
console.log(newArr)
数组降维
// 多维数组转化一维
let arr = [
[0, 1],
[2, 3],
[4, [5, 6, 7]],
]
const newArr = (arr) => {
return arr.reduce(
// 判断arr中的项是否是一个数组,如果是的话就直接合并数组,不是就递归这个方法
(prev, curr) => prev.concat(Array.isArray(curr) ? newArr(curr) : curr),
[]
)
}
console.log(newArr(arr))
相关文章
- Qt使用多线程的一些心得——1.继承QThread的多线程使用方法
- HONOR荣耀50/荣耀50Pro怎么解锁huawei 荣耀50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验
- HTML中CSS清除浮动的方法总结
- JDK8辅助学习(四):Stream流 collect() 方法的详细使用介绍「建议收藏」
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类注入方法 )
- 使用phpMyAdmin修改MySQL数据库root用户密码的方法
- Oracle 等待事件 log file sequential read 官方解释,作用,如何使用及优化方法
- Linux系统中使用Tomcat快速配置方法(linux配置tomcat)
- Java多线程12:ReentrantLock中的方法详解编程语言
- 精通 Oracle 触发器:不同类型的使用方法(oracle触发器类型)
- Linux环境下获取系统变量的方法(getenvlinux)
- 深入探究Linux中的Tab字符使用方法(Linuxtab字符)
- 「了解 Linux assert 的使用方法」(linuxassert)
- MySql数据库中Bit属性的使用方法简介(mysql中bit属性)
- MySQL删除记录操作的日志记录方法(mysql中删除记录日志)
- 深入探究MySQL中关联字段及其使用方法(mysql中关联字段)
- 一步步200让你搞懂Redis的链接使用方法(redis链接使用方法)
- asp.netTimer的使用方法
- Windowsmysql双向同步设置方法详细篇
- EasyUI中MenuButton的使用方法
- java使double保留两位小数的多方法java保留两位小数
- node.js中的buffer.write方法使用说明
- node.js中的buffer.Buffer.isBuffer方法使用说明
- js使用DOM设置单选按钮、复选框及下拉菜单的方法
- python中的reduce内建函数使用方法指南