2019-06-28|2019-06-28 reduce学习
借鉴:https://www.jianshu.com/p/e375ba1cfc47
2019-06-28 reduce学习
说明:reduce(callback,init)。
callback有四个参数:prev(上次调用返回的值或者是init),cur(当前的值),index(当前值的索引),arry(调用reduce的数组)
【2019-06-28|2019-06-28 reduce学习】init:第一次调用callback的第一个函数
用法:
1、初始值提供?
arr = [1,2,3,4];
arr.reduce(callback,init)不提供init值,reduce从索引1的地方执行callback提供init值0,reduce从索引0的地方执行callback
2、数组为空,初始值提供?
arr=[];
arr.reduce(callback,init)
不提供init值,直接报错"TypeError: Reduce of empty array with no initial value"
提供init值0,不报错
3、求和:
arr.reduce((x,y)=>x+y)
4、求乘积
arr.reduce((x,y)=>x*y)
5、求元素出现次数
let names = ['zhangsan','lisi','wangwu','lisi']
let nameNum = names.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
} else {
pre[cur]=1
}
return pre
},{})
6、数组去重
let names = ['zhangsan','lisi','wangwu','lisi'];
let newArr = names.reduce((pre,cur)=>{
if(!pre.includes(cur)){
return pre.concat(cur)
} else {
return pre
}
},[])
7、将二维数组转换为一维数组
let arr = [[0,1],[2,3],[4,5]];
let newArr = arr.reduce((pre,cur)=>{
return pre.concat(cur)
},[])
8、将多维数组转换为一维
let arr = [0,[1,2],[3,[4,5]]];
let newArr = (arr)=>{
arr.reduce((pre,cur)=>{
pre.concat(Array.isArray(cur)?newArr(cur):cur)
},[])
}
9、对象里的属性求和
let result = [{name:'zhangsan',age:12},{name:'lisi',age:14},{name:'wangwu',age:18}];
let ageSum = result.reduce((pre,cur)=>{
pre = cur.age+pre
},0)
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》