js数组reduce方法的详解

👀一起来瞅瞅reduce到底是怎么个事?

📕 reduce是数组的一个方法,它可以对数组进行迭代,通过回调函数对数组每一次迭代进行处理,从而获取到我们想要的结果。

1、reduce方法的参数如下
请添加图片描述ok ,结合代码来看看上面总结的是否正确

    list = [1, 2, 3, 4, 5]
    const init = 0
    list.reduce((pre, cur, index, arr) => {
        console.log(pre, cur, index , arr)
        return '我是返回给pre的值'
    })
    console.log('-------------分割线--------------')
    list.reduce((pre, cur, index, arr) => {
        console.log(pre, cur, index , arr)
        return '我是返回给pre的值'

    }, 0)

请添加图片描述通过结果发现,第一次没有给初始值。pre将数组第一项当作默认值,cur从第二项开始所以只迭代了四次。每次迭代的返回值都传给了pre, index为当前迭代对象的下标 ,arr为原数组|第二次传递了初始值,迭代也发生了相应的改变

👌: 看到这相信已经明白了reduce的参数以及作用, 下面使用reduce来解决一些问题吧!

1、使用reduce进行数组求和

	list = [1, 2, 3, 4, 5]
    let res = list.reduce((pre, cur)=>{
        console.log('累计和:'+pre,'当前项:'+cur)
        return pre+cur
    })
    console.log('结果: '+res)

在这里插入图片描述

2、🤣看注释需求(题目有点长)

    /* 
        需求: 将以下数组type相同的项保留一个votes值最大的, 得到一个新数组
        比如:
            type为1的仅保留votes最大的100, type为2的仅保留votes最大的60...
    */
    var list = [
        { type: 1, des: "aaaa", votes: 80 },
        { type: 2, des: "dddd", votes: 60 },
        { type: 3, des: "dddd", votes: 70 },
        { type: 1, des: "aaaa", votes: 50 },
        { type: 3, des: "dddd", votes: 80 },
        { type: 8, des: "dddd", votes: 80 },
        { type: 9, des: "dddd", votes: 20 },
        { type: 1, des: "aaaa", votes: 100 },
        { type: 3, des: "dddd", votes: 30 },
    ]
    var newArr = list.reduce((pre, cur) => {
        // 查找每次迭代返回的数组中有没有和本次type相同的项
        let foundIndex = pre.findIndex(item => item.type === cur.type)
        console.log(foundIndex)

        
        if(foundIndex !== -1){
            // 如果有就进行votes的比较
            if(cur.votes > pre[foundIndex].votes){
                // 若本次的大于pre中的则进行替换
                pre[foundIndex] = cur
            }
        }else{
            // 若本次没有与当前type相等的就push进数组并且返回
            pre.push(cur)
        }

        return pre
    }, []) //注意,这里的初始值可以为一个空数组哦

    console.log(newArr)

🤷‍♂️reduce就到这里吧!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在JavaScript中,数组reduce()方法用于对数组中的元素进行累积操作。它接受一个回调函数和一个初始值作为参数。该回调函数用于对数组中的每个元素执行操作,并返回累积结果。如果没有提供初始值,则从索引1开始执行回调函数,跳过第一个索引;如果提供了初始值,则从索引0开始执行回调函数。下面是reduce()方法的几个简单用法。 1. 求和、求乘积等等: 可以使用reduce()方法数组中的元素进行求和、求乘积等操作。例如,给定一个数组arr = [1, 2, 3, 4, 5,可以使用reduce()方法求出数组元素的和、乘积、差和商。,可以使用reduce()方法求出数组元素的累加和和累乘积。,可以使用reduce()方法将重复的元素去除,返回一个新的数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JS数组reduce()方法详解](https://blog.csdn.net/weixin_47619284/article/details/125921346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JS 数组中的 reduce 方法](https://blog.csdn.net/a15220216758/article/details/125029602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值