十六、reduce方法的详解(2021/4/27)

本文详细解析JavaScript中的reduce方法,介绍其工作原理,包括初始值的设定及参数含义,并通过实例展示reduce在数组求和、求乘积、计数、去重及数组转换等场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arr.reduce(function(prev,cur,index,arr){
        // ...
},init);
  • arr表示原数组;
  • prev表示上一次调用回调时的返回值。或者初始值init;
  • cur表示当前正在处理的效组元素;
  • index表示当前正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1;
  • init表示初始值。

这里说明一下:

  • 如果有初始值init,则prev为init的值,cur为arr[0]
  • 如果没有初始值init,则prev为arr[0],cur为arr[1]

常用的参数只有两个: prev和cur.

应用:

  • 数组求和,求乘积
// 一、求和:
var arr = [1,2,3,4];
var res = arr.reduce((pre,cur) =>{
        return pre + cur
})
console.log(res); //10

// 加入给了初始值2
var res = arr.reduce((pre,cur) =>{
        return pre + cur
},2) 
// 这里pre会变成init,cur变成arr[0],结果就是init + 1 + 2 + 3 + 4 = 12
console.log(res); //12
  • 计算数组中每个元素出现的次数
// 计算数组中每个元素出现的次数
let person = ['张三','李四','王五','赵六','赵六'];
let res5 = person.reduce((pre,cur)=>{
        if(cur in pre){
                pre[cur]++;
        }else{
                pre[cur]=1;
        }
        return pre;
},{})
console.log(res5); //{ '张三': 1, '李四': 1, '王五': 1, '赵六': 2 }
  • 数组去重
// 数组去重
var arr = [1,2,3,4,4,5,5,5,6,7,7];
let res6 = arr.reduce((pre,cur)=>{
       if(!pre.includes(cur)){pre.push(cur)}
       return pre
},[])

console.log(res6);
  • 将二维数组转化成一维数组
  • 将多维数组转化成一维数组
// 二、数组扁平化处理:
var arr2 = [1,[2,[3,4,5]]];

// var res2 = arr2.reduce((pre,cur)=>{
//         if(Array.isArray(pre) ? )
// })
function fn(arr){
        return arr.reduce((pre,cur)=>{
               return pre.concat(Array.isArray(cur) ? fn(cur) : cur)
        },[])
}

var res3 = fn(arr2);
console.log(res3); // [1,2,3,4,5]
  • 对象里的属性求和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值