语法:
arr.reduce(function (prev, cur, index, arr) {...}, init)
复制代码
- arr表示原数组;
- prev 表示上一次调用回调时的返回值,或者初始值init;
- cur 表示当前正在处理的数组元素;
- index表示当前正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1;
- init 表示初始值。
常用的参数只有两个:prev和cur。
常用例子:
-数组求和,求乘积
-计算数组中每个元素出现的次数
-数组去重
-将多维数组转化成一维数组(数组扁平化)
复制代码
1-数组求和,求乘积
let arr = [1, 2, 3, 5, 8, 10]
const result = arr.reduce((prev,cur) =>prev + cur)
console.log(result); //29
复制代码
2-计算数组中每个元素出现的次数
let person = ["杨幂", "迪丽热巴", "关晓彤", "加拿大电王", "加拿大电王", "杨幂", "杨幂"]
let num = person.reduce((prev, cur) => {
if (prev.hasOwnProperty(cur)) {
prev[cur]++
} else {
prev[cur] = 1
}
return prev
}, {})
console.log(num) //{ '杨幂': 3, '迪丽热巴': 1, '关晓彤': 1, '加拿大电王': 2 }
复制代码
3-数组去重
let arr = [1, 1, 2, 3, 8, 3, 9, 10]
let newarr = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
return prev.concat(cur)
}
return prev
}, [])
console.log(newarr) //[ 1, 2, 3, 8, 9, 10 ]
复制代码
4.-将多维数组转化成一维数组(数组扁平化)
let arr = [1, [2, [3, 4], 5,], 6, 7, 8, 9]
let fn = (arr) => {
return arr.reduce((prev, cur) => {
return prev.concat( Array.isArray(cur) ? fn(cur) : cur )
},[])
}
console.log( fn(arr)) //[1, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END