范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

代码写得好,Reduce少不了,我用它在同事面前秀了一波

  数组中的  reduce  犹如一只魔法棒,通过它可以做一些黑科技一样的事情。语法如下: reduce(callback(accumulator, currentValue[, index, array])[,initialValue])
  reduce  接受两个参数,回调函数和初识值,初始值是可选的。回调函数接受4个参数:积累值、当前值、当前下标、当前数组。
  如果  reduce 的参数只有一个,那么积累值一开始是数组中第一个值,如果reduce 的参数有两个,那么积累值一开始是出入的 initialValue  初始值。然后在每一次迭代时,返回的值作为下一次迭代的 accumulator  积累值。
  今天的这些例子的大多数可能不是问题的理想解决方案,主要的目的是想说介绍如何使用 reduce 来解决问题。 求和和乘法// 求和 [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => a + i); // 30  // 有初始化值 [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => a + i, 5 ); // 35  // 如果看不懂第一个的代码,那么下面的代码与它等价 [3, 5, 4, 3, 6, 2, 3, 4].reduce(function(a, i){return (a + i)}, 0 );  // 乘法 [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => a * i); 查找数组中的最大值
  如果要使用  reduce  查找数组中的最大值,可以这么做: [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => Math.max(a, i), -Infinity);
  上面,在每一次迭代中,我们返回累加器和当前项之间的最大值,最后我们得到整个数组的最大值。
  如果你真想在数组中找到最大值,不要有上面这个,用下面这个更简洁:  Math.max(...[3, 5, 4, 3, 6, 2, 3, 4]); 连接不均匀数组let data = [   ["The","red", "horse"],   ["Plane","over","the","ocean"],   ["Chocolate","ice","cream","is","awesome"],    ["this","is","a","long","sentence"] ] let dataConcat = data.map(item=>item.reduce((a,i)=>`${a} ${i}`))  // 结果 ["The red horse",  "Plane over the ocean",  "Chocolate ice cream is awesome",  "this is a long sentence"]
  在这里我们使用  map  来遍历数组中的每一项,我们对所有的数组进行还原,并将数组还原成一个字符串。 移除数组中的重复项let dupes = [1,2,3,"a","a","f",3,4,2,"d","d"] let withOutDupes = dupes.reduce((noDupes, curVal) => {   if (noDupes.indexOf(curVal) === -1) { noDupes.push(curVal) }   return noDupes }, [])
  检查当前值是否在累加器数组上存在,如果没有则返回 -1 ,然后添加它。
  当然可以用  Set  的方式来快速删除重复值,有兴趣的可以自己去谷歌一下。 验证括号[..."(())()(()())"].reduce((a,i)=> i==="("?a+1:a-1,0); // 0  [..."((())()(()())"].reduce((a,i)=> i==="("?a+1:a-1,0); // 1  [..."(())()(()()))"].reduce((a,i)=> i==="("?a+1:a-1,0); // -1
  这是一个很酷的项目,之前在力扣中有刷到。  按属性分组let obj = [   {name: "Alice", job: "Data Analyst", country: "AU"},   {name: "Bob", job: "Pilot", country: "US"},   {name: "Lewis", job: "Pilot", country: "US"},   {name: "Karen", job: "Software Eng", country: "CA"},   {name: "Jona", job: "Painter", country: "CA"},   {name: "Jeremy", job: "Artist", country: "SP"}, ] let ppl = obj.reduce((group, curP) => {   let newkey = curP["country"]   if(!group[newkey]){     group[newkey]=[]   }   group[newkey].push(curP)   return group }, [])
  这里,我们根据  country  对第一个对象数组进行分组,在每次迭代中,我们检查键是否存在,如果不存在,我们创建一个数组,然后将当前的对象添加到该数组中,并返回组数组。
  你可以用它做一个函数,用一个指定的键来分组对象。  扁平数组let flattened = [[3, 4, 5], [2, 5, 3], [4, 5, 6]].reduce(   (singleArr, nextArray) => singleArr.concat(nextArray), [])  // 结果:[3, 4, 5, 2, 5, 3, 4, 5, 6]
  这只是一层,如果有多层,可以用递归函数来解决,但我不太喜欢在 JS 上做递归的东西。
  一个预定的方法是使用 .flat 方法,它将做同样的事情 [ [3, 4, 5],   [2, 5, 3],   [4, 5, 6] ].flat(); 只有幂的正数[-3, 4, 7, 2, 4].reduce((acc, cur) => {   if (cur> 0) {     let R = cur**2;     acc.push(R);   }   return acc; }, []);  // 结果 [16, 49, 4, 144] 反转字符串const reverseStr = str=>[...str].reduce((a,v)=>v+a)
  这个方法适用于任何对象,不仅适用于字符串。调用 reverseStr("Hola") ,输出的结果是aloH 。 二进制转十进制const bin2dec = str=>[...String(str)].reduce((acc,cur)=>+cur+acc*2,0)  // 等价于  const bin2dec = (str) => {   return [...String(str)].reduce((acc,cur)=>{     return +cur+acc*2   },0) }
  为了说明这一点,让我们看一个例子: (10111)->1+(1+(1+(0+(1+0*2)*2)*2)*2)*2 。
  ~完,我是刷碗智,励志等退休后,要回家摆地摊的人,我们下期见!
  作者:Ramgen 译者:前端小智 来源:dev 原文:https://dev.to/ramgendepy/learn-javascript-reduce-method-with-5-examples-128n

深圳一外卖员涉嫌砍伤市民,警方称已刑拘,平台回应南都讯记者焦明梁近日,有市民向南都记者反馈称,8月9日,其在饿了么平台点外卖时,被送餐延迟的外卖员持刀砍伤,目前该外卖员已被警方刑事拘留。针对此事,饿了么平台回应称,该案件正由警方真快乐828生活家电福利来袭飞利浦电动剃须刀低至7折关于生活的真谛,更多网友加入了讨论大战。悲观主义者说,生活就是生下来,活下去文艺青年说,生活是就是一部电影一幅画一首歌乐观主义者说,生活就是丰富多彩的体验,每天都不一样那么你认为生核心升级,经典再次起航游戏模式高通蓝牙5。2,反向充电太霸道不知道大家还记得两年前那款南卡经典传奇N2么?一个发售就自带光环的真无线蓝牙耳机,开创了买耳机送充电宝的先河。3000mAh超大充电仓可反向充电,高通5。0的芯片。当年南卡N2的配国产芯片半导体产业链上市公司一览!(收藏备用)1代工中国前三大晶圆代工厂商中芯国际华虹半导体华润微中芯国际(AH)大陆代工龙头,集中于逻辑和存储产品华虹半导体(H股)功率半导体主要的代工方华润微功率半导体主要的代工方三安光电第70后的怀旧经典,walkman小时候受到亲戚的影响,特别喜欢电子产品。记得第一台walkman是父亲出差广州带回的国产walkman,感觉无比神奇和兴富,时不时地拿出来听,94年上了师范,那时随身听特别流行,拥未来iPad可能会采用钛合金外壳根据DigiTimes消息,苹果正在考虑使用钛合金制作iPad外壳,取代目前iPad上的铝合金外壳。上个月,有传言称2022款iPhone也会采用钛合金材料。最近,苹果申请了许多与比特币九月份可能会回调20左右,请大家注意投资风险现在是北京时间2021年8月26日早上八点十分。BTC昨天的市场和我们预期的一样。一条很大的积极线是47500左右,现在已经达到49000左右我昨天在朋友圈里说,请注意9月份的撤退手机厂商能不能生产差异化的手机手机厂商能不能生产差异化的手机?现在的智能手机,配置堆高的同时价格也提高了不少!但是同质化太严重!手机厂商能不能生产一些不一样的手机,在不改变处理器不降低手机性能的前提下。比如针对Thingsboard二次开发系列拷贝篇10widget(03创建简单的小部件)素材和版本tbrelease3。2。2小部件(Widget类型)最新值小部件在WidgetsBundle视图中,单击屏幕右下角的大按钮,然后单击创建新的小部件类型按钮。单击选择小部教大家一个最简单粗暴升级miui12。5增强版的办法1。首先让我打开一个网址(速度可能有点慢,耐心等待一下)httpsgithub。commooseIreupdatemiuiotacommitsmasterStable如下图2。点击阿里巴巴性侵事件远没那么简单,一个全新的时代大潮扑面而来这个夏天,阿里巴巴性侵门事件成为热度最高的事件。所有人的关注点都还在于事件本身,因为事件本身就太扑朔迷离,本身就太大了。许多人还没有从事件的震惊与迷惑中走出来。当我们抬头的时候,一
丰田发布2020财年联合财务报表全球销量利润最高如果要说世界上最会赚钱的车企是哪一个,相信丰田肯定当仁不让。近日,丰田汽车公布了2020财年(2020年4月至2021年3月)的丰田集团联合财务报表与2021财年(2021年4月至恒大汽车秀造车新实力集团申请专利超3000件5月12日,恒大汽车首次对外公布专利信息恒大新能源汽车集团(含下属企业)在中国及国外总共申请专利3,012件,其中已获得授权专利1,355件,这些专利涵盖纯电动底盘构架悬架系统转向宝马确认纯电MINI敞篷版量产预计联合长城共同打造据多家媒体报道,宝马旗下MINI品牌高层人士在采访时透露,全新MIMI将推出敞篷版,并采用钝电动力驱动,预计2025年亮相。值得一提的是,该车很可能将会由宝马和长城合资的光束汽车在虎嗅FampampampM创新节在创投冬天,信心比金子还重要全球每5家独角兽企业中就有两家出自中国,独角兽们不断摸索着中国特色的成长之路,摆脱平庸,克服成长的烦恼,成了不衰的话题。11月24日25日,虎嗅FM创新节在京举行,这个关注科技商业思必驰获评德勤2018中国明日之星11月20日,2018中国高科技高成长50强暨明日之星颁奖盛典在京举行,中国高科技高成长50强项目1995年创办于美国硅谷,2005年进入中国,每年在数十个国家举行,被誉为全球高成AWE2019全屋智能,思必驰携手涂鸦打破平台壁垒2019年3月14日17日,2019中国家电及消费电子博览会(简称AWE2019)在上海新国际博览中心如期举行。AWE被誉为全球三大家电及消费电子展之一,吸引了来自世界各地的品牌参AI语音赋能智能驾驶,思必驰天琴语音助手保驾护航3月30日31日,2019中国(深圳)国际汽车电子产业年会暨第五届中国汽车电子科学技术奖颁奖盛典(以下简称汽车电子产业年会)召开,本届产业年会以迎挑战促转型抓机遇,共同推进新四化为海信火力全开连推4款春季新品,社交电视横空出世4月15日,海信在北京举办2019年春季新品大秀,接连推出重新定义全面屏的超画质电视U8更好的OLED电视A8AI图搜无人超越的U7和主打线上的VIDAA电视等四款新品,技术行业最汛情致车辆报废的郑州车主可申领购车补贴即日起,在汛情中受损报废的郑州本地牌照(豫A和豫V)民用汽车,车主本人重新购置车辆可以通过郑好办App购车补贴专区进行申领。郑州市车辆受损报废的车主购置新车补贴办法明确,购置新能源MiniMicroLED新一代车载显示技术应用坐在汽车座舱里,我们第一眼看到的就是车载显示,它主要应用在中控屏组合仪表盘娱乐系统等汽车内饰,在汽车越来越智能化的趋势下,车载显示越来越表现出消费电子的特性,中控大屏双联屏等车载显域控制器引混战智能座舱及自动驾驶域成竞争焦点来源盖世汽车尽管对于很多人来说,域控制器还是个有些陌生的名词,但域控制器的火热其实已显而易见,尤其在今年。4月上市的威马W6(参数丨图片)6月上市的岚图FREE以及7月上市的吉利星