reduce方法在平时用的比较少,最近整理数组去重觉得它还是挺好用的,然而它还有好多功能,下面就梳理一下它都有哪些用法。

一、mdn给的解释:

reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

提取一下:

1. 为数组的每个值从左到右执行提供的函数;

2. 将数组缩减为单个值(函数遍历整个数组后的结果)。

二、语法:

 arr.reduce(callback,[initialValue])

initialValue 可选,指定了初始值 initialValue,则起始索引号为 0(从初始值开始计算),否则从索引 1 起始(从数组第一个元素开始计算)。

三、用法

1. 求和 / 求积

let arr=[1,2,3,4]
arr.reduce((x,y)=>x+y);  //10
arr.reduce((x,y)=>x*y);  //24

2. 对象里属性求和/求积


var result = [{subject: 'math',score: 10},{subject: 'chinese',score: 20},
];result.reduce(function(prev, cur) {return cur.score + prev; //和return cur.score * prev; //积
}, 0);  //30

3. 计算数组中每个元素出现的次数


let arr= ['x', 'y', 'z','y'];arr.reduce((pre,cur)=>{if(cur in pre){pre[cur]++;}else{pre[cur]=1;}return pre;
},{});  //{x:1,y:2,z:1}

4. 将二维数组转化为一维数组 / 将多维数组转化为一维数组

let arr = [[1, 2], [2, 4]]
arr.reduce((pre,cur)=>{return pre.concat(cur);
},[])  //[1, 2, 2, 4]let arr = [[1, 2], [[3,4], 4]]
const newArr = function(arr){return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
}   //[1, 2, 3, 4, 4]

5. 数组去重 / 对象数组去重

//数组
let arr = [1,2,3,3,1]
let newArr = arr.reduce((pre,cur)=>{if(!pre.includes(cur)){return pre.concat(cur)}else{return pre}
},[]) // [1, 2, 3]//对象数组
let arr = [{name: 'x', id:1},{name: 'y', id:2},{name: 'z', id:1},
]
let obj = {}
let newArr = arr.reduce((item, next)=>{obj[next.id] ? "" : (obj[next.id] = true && item.push(next));return item;
},[]) // [{name: 'x', id:1}, {name: 'y', id:2}]

reduce函数及其用法相关推荐

  1. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下  

  2. Python 3.x中reduce()函数完整用法

    在Python 3.x中,reduce()不再是内置函数,而是移到了标准库functools中,需要先导入再使用,其官方解释如图所示: 从官方文档可知,该函数用法要点如下: 1)把一个双参数函数以累积 ...

  3. python reduce函数_Python reduce()函数的用法小结

    reduce()函数也是Python内置的一个高阶函数. reduce() 格式: reduce (func, seq[, init()]) reduce()函数即为化简函数,它的执行过程为:每一次迭 ...

  4. reduce函数的用法

    首先看reduce函数的官方解释(python2): reduce(...)reduce(function, sequence[, initial]) -> valueApply a funct ...

  5. python中reduce函数用法_一文读懂reduce函数

    Python中的reduce函数是经常和map,filter一起被提到的函数,但是reduce的工作原理却不是那么直观,我们这里就来详细讲解一下这个函数. 首先先来看一下reduce函数的用法 imp ...

  6. Python使用reduce()函数计算多个集合的并集与交集

    问题比较简单,直接上代码了,关键是标准库functools中reduce()函数的用法,当然其中的函数intersect和union可以使用lambda表达式进行替换,大家可以尝试着写一写. 温馨提示 ...

  7. map函数、filer函数、reduce函数的用法和区别

    Map函数 map函数的用法如下: def add_one(x):return x+1#使用普通函数 v1 = map(add_one,[1,2,3]) v1 = list(v1) print(v1) ...

  8. pythonpr函数_python reduce()函数

    reduce()函数 reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传 ...

  9. python里apply用法_Python apply函数的用法

    Python apply函数的用法 发布于 2014-08-07 21:02:24 | 674 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

最新文章

  1. 3.8 激活函数的导数-深度学习-Stanford吴恩达教授
  2. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发
  3. 【渝粤题库】国家开放大学2021春3924★汽车电器设备构造与检修题目
  4. 信息学奥赛一本通 1126:矩阵转置 | OpenJudge NOI 1.8 10:矩阵转置
  5. 【Emit基础】如何发射foreach代码?
  6. HDU2564 词组缩写【文本】
  7. 常用编码软件简单使用记录 2 : 非自主编码器
  8. Tensorflow从开始到放弃(技术篇)
  9. 回溯法、动态规划法——牛妹的蛋糕
  10. SPFA算法模板(刘汝佳版)--Wormholes POJ - 3259
  11. 麻省理工学院公开课:算法导论
  12. 共享汽车违章难处理 车企用定位模块来解决
  13. 小米手机显示流量数据连接到服务器,小米手机流量总不稳定,这三项设置可能你会用到...
  14. .NET Framework各个版本(3.5 - 4.0)
  15. C语言程序设计——结构体
  16. 人工智能的就业方向有哪些?
  17. 论文笔记-ORB-SLAM2-双目与rgbd相机跟单目情况的区别
  18. 首次曝光!唯一全域最高等级背后的阿里云云原生安全全景图
  19. 2017年香港家庭用品展览会会刊(参展商名录)
  20. (附源码)Springboot校园二手交易平台小程序 毕业设计191637

热门文章

  1. Fortran(X)概述
  2. 并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等 目录 1. “共享内存系统”,消息传递系统”。 1 1.1. 共享模式 多进程 多线程 1 1.2. Actor消息模式 事件驱动 2
  3. CA6140车床法兰盘零件机械加工工艺规程及钻3-11 孔工序专用夹具设计
  4. 华为交换机配置接口安全
  5. 2021牛客寒假算法基础集训营1 蒟弱补题日记
  6. 【社会调研】访谈个案案例分享
  7. linux安装WPS2019操作
  8. 洛谷 2887 USACO2007NOV 防晒霜Sunscreen 题解
  9. 【转载】Android开发时,那些相见恨晚的工具或网站!
  10. 【编程之外】从《海贼王》的视角走进BAT的世界