前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >reduce归并

reduce归并

原创
作者头像
大发明家
发布2021-12-15 15:29:06
6650
发布2021-12-15 15:29:06
举报
文章被收录于专栏:技术博客文章
1.1 reduce(fn,value):
第一个参数是一个函数,每次遍历都会调用的函数
代码语言:txt
复制
// 回调函数的参数
代码语言:txt
复制
fn(preview,current,index,arr){
代码语言:txt
复制
    // 第一个参数是前一个值
代码语言:txt
复制
    // 第二个参数是当前值
代码语言:txt
复制
    // 第三个参数是当前元素索引
代码语言:txt
复制
    // 第四个参数是引用的数组
代码语言:txt
复制
}
第二个参数是:归并基础的初始值
2.reduce()方法一个参数和两个参数的区别
2.1 只传一个参数
代码语言:txt
复制
let arr = [2 ,4 ,5,3,1]
代码语言:txt
复制
let result = arr.reduce((preview, current) => {
代码语言:txt
复制
    return preview + current
代码语言:txt
复制
})
代码语言:txt
复制
console.log(result) //15

上面的代码用于计算数组的总和。reduce方法之传入了匿名函数,函数只接收两个参数,分别是前一个值preview,当前值current。当reduce方法没有传入第二个参数时,第一次循环的前一个值为数组的第一项,当前值则为数组的第二项。。函数返回的是preview

  • current的结果会成为第二次循环preview的值,此时的当前值则为数组的第三项。后面的循环以此类推。
代码语言:txt
复制
let arr = [2 ,4 ,5,3,1]
代码语言:txt
复制
let result = arr.reduce((preview, current) => {
代码语言:txt
复制
    console.log('前一个值:' + preview)
代码语言:txt
复制
    console.log('当前值是:' + current)
代码语言:txt
复制
    return preview + current
代码语言:txt
复制
})
代码语言:txt
复制
console.log(result)
代码语言:txt
复制
// 前一个值:2
代码语言:txt
复制
// 当前值是:4(第一次循环)
代码语言:txt
复制
// 前一个值:6
代码语言:txt
复制
// 当前值是:5(第二次循环)
代码语言:txt
复制
// 前一个值:11
代码语言:txt
复制
// 当前值是:3(第三次循环)
代码语言:txt
复制
// 前一个值:14
代码语言:txt
复制
// 当前值是:1(第四次循环)
代码语言:txt
复制
// 15(最终返回的值)
2.2传两个参数
代码语言:txt
复制
let arr = [2 ,4 ,5,3,1]
代码语言:txt
复制
let result = arr.reduce((preview, current) => {
代码语言:txt
复制
    console.log('前一个值:' + preview)
代码语言:txt
复制
    console.log('当前值是:' + current)
代码语言:txt
复制
    return preview + current
代码语言:txt
复制
}, 10)
代码语言:txt
复制
console.log(result)
代码语言:txt
复制
// 前一个值:10
代码语言:txt
复制
// 当前值是:2(第一次循环)
代码语言:txt
复制
// 前一个值:12
代码语言:txt
复制
// 当前值是:4(第二次循环)
代码语言:txt
复制
// 前一个值:16
代码语言:txt
复制
// 当前值是:5(第三次循环)
代码语言:txt
复制
// 前一个值:21
代码语言:txt
复制
// 当前值是:3(第四次循环)
代码语言:txt
复制
// 前一个值:24
代码语言:txt
复制
// 当前值是:1(第五次循环)
代码语言:txt
复制
// 25(最终返回的值)

上面的代码reruce方法传入两个参数,此时前一个值为第二个参数的值,当前值为数组的第一项

3. reduce()的应用
3.1 计算数组的和
代码语言:txt
复制
let arr = [1, 2, 3, 4, 5]
代码语言:txt
复制
let result = arr.reduce((preview,current) => {
代码语言:txt
复制
    return preview + current
代码语言:txt
复制
})
代码语言:txt
复制
console.log(recult) // 15
3.2 简单的数组去重
代码语言:txt
复制
let arr = [1, 2, 3, 4, 5, 2, 2, 3, 4]
代码语言:txt
复制
let result = arr.reduce((preview,current) => {
代码语言:txt
复制
    if(!preview.includes(current)){
代码语言:txt
复制
        preview.push(current)
代码语言:txt
复制
    }
代码语言:txt
复制
    return preview
代码语言:txt
复制
}, [])
代码语言:txt
复制
console.log(result) // [1, 2, 3, 4, 5]
3.3 统计每个值,在数组中出现的次数
代码语言:txt
复制
let arr = [1, 2, 3, 4, 5, 2, 2, 3, 4]
代码语言:txt
复制
let result = arr.reduce((preview,current) => {
代码语言:txt
复制
    console.log('前一个值:' + preview)
代码语言:txt
复制
    console.log('当前值是:' + current)
代码语言:txt
复制
    if(preview[current] !== undefined){
代码语言:txt
复制
        preview[current] ++
代码语言:txt
复制
    } else {
代码语言:txt
复制
        preview[current] = 1
代码语言:txt
复制
    }
代码语言:txt
复制
    return preview
代码语言:txt
复制
}, {})
代码语言:txt
复制
console.log(result)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 reduce(fn,value):
    • 第一个参数是一个函数,每次遍历都会调用的函数
      • 第二个参数是:归并基础的初始值
      • 2.reduce()方法一个参数和两个参数的区别
        • 2.1 只传一个参数
          • 2.2传两个参数
          • 3. reduce()的应用
            • 3.1 计算数组的和
              • 3.2 简单的数组去重
                • 3.3 统计每个值,在数组中出现的次数
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档