es6中reduce的基本使用方法
前言
为啥要把es6中reduce单独拿出来说呢,因为这个功能实在太骚,值得如此。
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce()方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用reduce()的数组。
reduce()的几个强大用法:
数组求和
vartotal=[0,1,2,3].reduce((acc,cur)=>{ returnacc+cur },0); console.log(total)//6
二维数组转为一维数组
vararray=[[1,2],[3,4],[5,6]].reduce((acc,cur)=>{ returnacc.concat(cur) },[]); console.log(array)//[0,1,3,4,5,6]
计算数组中每个元素出现的次数
方法一
letnames=['tom','jim','jack','tom','jack']; constcountNames=names.reduce((allNames,name)=>{ if(nameinallNames){ allNames[name]++; } else{ allNames[name]=1; } returnallNames; },{}); console.log(countNames)//{tom:2,jim:1,jack:2}
方法二
constarraySum=(arr,val)=>arr.reduce((acc,cur)=>{ returncur==val?acc+1:acc+0 },0); letarr=[0,1,3,0,2,0,2,3] console.log(arraySum(arr,0))//数组arr中0元素出现的次数为3
数组去重
1.方法一
letarr=[1,2,1,2,3,5,4,5,3,4,4,4,4]; letresult=arr.sort().reduce((init,current)=>{ if(init.length===0||init[init.length-1]!==current){ init.push(current); } returninit; },[]); console.log(result);//[1,2,3,4,5]
2.方法二
当然,对于数组去重,也可以直接使用es6的…[拓展运算符]+Set实现:
//console.log(...newSet([1,2,3,4,5,2,4,1])) constdedupe=(array)=>{ returnArray.from(newSet(array)); } console.log(dedupe([1,1,2,3]))//[1,2,3]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。