应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

。map()。filter()。reduce()的用法(转载

  原文链接:https:www。jianshu。compe87b195f6943。map()
  让我用一些简单的例子来解释它是如何工作的。如果说你收到一组包含多个对象的数组,每个对象是一个person。最终你只希望得到一个只包含id的数组。Whatyouhavevarofficers〔{id:20,name:CaptainPiett},{id:24,name:GeneralVeers},{id:56,name:AdmiralOzzel},{id:88,name:CommanderJerjerrod}〕;Whatyouneed〔20,24,56,88〕
  我想你有多种方式来实现这个目标:。forEach(),。for(。。。of),或者一个简单的。for()
  让我们对比一下吧!
  用。forEach()varofficersIds〔〕;officers。forEach(function(officer){officersIds。push(officer。id);});
  可以注意到,你不得不先创建一个空数组?让我们来看看。map()是如何做到的。varofficersIdsofficers。map(function(officer){returnofficer。id});
  我们可以使用箭头函数做到更加的精简。constofficersIdsofficers。map(officerofficer。id);
  那么。map()是怎么运行的呢?实际上对数组的每个元素都遍历一次,同时返回一个新的值。记住一点是返回的这个数据的长度和原始数组长度是一致的。。filter()
  假如你有一个数组,你只想要这个数组中的一些元素怎么办呢?这时候。filter()就非常好用了。varpilots〔{id:2,name:WedgeAntilles,faction:Rebels,},{id:8,name:CienaRee,faction:Empire,},{id:40,name:IdenVersio,faction:Empire,},{id:66,name:ThaneKyrell,faction:Rebels,}〕;
  如果我们现在想要两个数组:一个是rebel飞行员,一个是imperials飞行员,用。filter()将会非常简单varrebelspilots。filter(function(pilot){returnpilot。factionRebels;});varempirepilots。filter(function(pilot){returnpilot。factionEmpire;});
  我们还可以用箭头函数更优雅的表达:constrebelspilots。filter(pilotpilot。factionRebels);constempirepilots。filter(pilotpilot。factionEmpire);
  总结:如果callback函数返回true,这个元素将会出现在返回的数组中,如果返回false就不会出现在返回数组中。reduce()
  一个简单的例子,你就能感受到。reduce()的用法了。假如你有一个包含一些飞行员以及他们飞行经验的数组。varpilots〔{id:10,name:PoeDameron,years:14,},{id:2,name:TemminSnapWexley,years:30,},{id:41,name:TallissanLintra,years:16,},{id:99,name:ElloAsty,years:22,}〕;
  如果你需要知道所有飞行员的总飞行年数。用。reduce()将会非常直观。vartotalYearspilots。reduce(function(accumulator,pilot){returnaccumulatorpilot。years;},0);reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
  可以看到我们开始先用0初始化了我们的accumulator的值,如果需要我们可以用其他的值去初始化accumulator。在对每个元素运行callback函数之后,reduce将会返回最终值给我们(例子中:82)
  同样我们可以用箭头函数精简我们的代码:consttotalYearspilots。reduce((acc,pilot)accpilot。years,0);
  假如我们需要知道飞行员中飞行年限最长的那位,我们可以这样获取:varmostExpPilotpilots。reduce(function(oldest,pilot){return(oldest。years0)pilot。years?oldest:pilot;},{});
  总结:reduce可以直观的返回数组里面指定的一个值或者对象。map()。filter()。reduce()结合使用
  因为。map()和。filter()都返回一个数组,所以我们可以轻松的用链式编程的方法来综合使用它们。
  假设我们有如下数据:varpersonnel〔{id:5,name:LukeSkywalker,pilotingScore:98,shootingScore:56,isForceUser:true,},{id:82,name:SabineWren,pilotingScore:73,shootingScore:99,isForceUser:false,},{id:22,name:ZebOrellios,pilotingScore:20,shootingScore:59,isForceUser:false,},{id:15,name:EzraBridger,pilotingScore:43,shootingScore:67,isForceUser:true,},{id:11,name:CalebDume,pilotingScore:71,shootingScore:85,isForceUser:true,},〕;
  我们的目标是:获取属性为force的用户总值,读者可以先自行思考一下,用于巩固前面所学知识,我们可以如下处理。vartotalJediScorepersonnel。filter(function(person){returnperson。isForceUser;})。map(function(jedi){returnjedi。pilotingScorejedi。shootingScore;})。reduce(function(acc,score){returnaccscore;},0);
  同样,我们也可以用箭头表达式精简他们。consttotalJediScorepersonnel。filter(personperson。isForceUser)。map(jedijedi。pilotingScorejedi。shootingScore)。reduce((acc,score)accscore,0);

世界杯臆想之A组无冕之王一枝独秀,两大冠军死磕,东道主悬了目前,距离2022年卡塔尔世界杯决赛圈开赛还剩5个月,32支球队正在紧锣密鼓地备战这四年一届的国际大赛,虽然我们国足再次没能入围,但我们还是对世界杯的到来充满无限期待,接下来给……全红禅哥哥做网红,两位美女陪伴谁是正主?拒绝消费全红禅名誉中国跳水队激烈备战,全红禅、陈芋汐等运动员已经到达世锦赛地点,在全新的场地进行训练,这将是全红禅第一次参与世锦赛,也是全红禅将冲击大满贯的有利时机,出征前全红禅四个字宣布自己的……寂然终于不固步自封?法师奶妈打野开启打野新玩法或许很多人还停留在寂然的六指韩信天花板的印象中,但最近寂然已经开启了新的打野流了!最近,寂然登上了105段野王榜,当一众粉丝以为他是单拿韩信上榜的时候,发现原来他上榜用的……要想血管健康,平时这3件事就要做到,可以预防血管疾病要想血管健康,平时这3件事就要做到,可以预防血管疾病第1件事:多喝水水是生命之源,喝水时,加入一些养护血管的小植物,可达到一定的降血脂效果。第2件事:迈开腿,……在非洲旅游,给那里的姑娘300元,能得到什么样的服务?最近跟大家聊得比较多的是东南亚的旅游行业,但很少跟大家聊非洲旅游的情况,今天就和大家了解一下,在非洲,300元可以享受哪些服务?众所周知,非洲的经济环境比东南亚更差,而且……听歌更舒服的骨传导耳机,自带16GB大内存,南卡Runner平时出门的时候大家都会戴上一副蓝牙耳机,这样看视频、听音乐的时候会更方便一些。喜欢跑步健身的朋友也都习惯在音乐的节奏下运动,以便获得更加自在地健身体验。现在市面的蓝牙耳机种类很……OPPOFindX3Pro摄影师版评测重新定义高颜值手机的a【科技犬】最近有很多网友私信科技犬,询问OPPOFindX3Pro摄影师版这款手机的综合表现到底如何?今天科技犬就通过全方位的深度实测来分享一下这款机型的上手体验心得,供……缅甸美女提示3000元就能享受缅甸豪华7日游,你有没有心动呢现如今,我国多数国人们早已看腻了国内的景区,因此在节假日的时候,多数的他们也都会去别的国家游玩一番。(此处已添加小程序,请到今日头条客户端查看)在选择出国旅游的时候,我国……宁德时代总经理辞职了,财富达1500亿,为何二当家能潇洒离开文龙溪来源商业传奇很多打工人还在苦苦找工作,宁德时代总经理黄世霖却裸辞了。同样是没有了工作,你可能是被动,人家则是主动,最关键是,人家身家已经上千亿。在今年初发布的……阿富汗巴米扬世界第一大佛遗址遭破坏阿富汗塔利班政府最近启动了一个旅游综合体的建设工作,该综合体距离保存着巴米扬佛像壁龛的悬崖仅数米之遥。考古学家和专家警告说,这会对珍贵的世界遗产地造成永久性破坏。两个男孩……通信企业的兴旺与衰落编者按:移动通信是时代不可磨灭的印迹。顺应时代波澜的企业破浪前行并打开新的世界,红极一时的领军企业也会在时代的光芒中黯淡离场。企业在通信时代更迭中屹立不倒的秘密是什……这个豆腐都喜欢吃,麻辣鲜嫩好吃下饭,厨师长教你做麻婆豆腐做法冬至过后天气逐渐转凉,回家都想吃点热乎的,厨师长推荐一道好吃下饭菜麻婆豆腐。大家都喜欢吃,麻辣鲜嫩,好吃下饭,它是怎么做的呢?厨师长今天分享麻婆豆腐的做法,学会这道菜你也是大厨……
新白娘子传奇转世投胎后,胡媚娘会获得幸福吗?之前写了一篇关于胡媚娘和采因的文章。有人在评论里说,胡媚娘投胎到一个贫寒家庭,能够接触到的最好的男人,就是许仕林了。也许,18年后,她会卷土重来,再跟仕林重续前缘。……为何刘邦一定要杀掉韩信?看完韩信做的这6件事,你就明白了为什么刘邦要杀韩信?许多人都觉得是狡兔死走狗烹,认为刘邦打开了一个很不好的风气,让后世不少的君王都学他,杀了有功之臣。然而从历史的角度来说,其实刘邦杀的人,大多都有必须要死的理……上分很稳的四个英雄,无视逆风局,有真伤的他是高端局常客在王者荣耀中,有的英雄出场率很高,但是胜率却要远远低于平局水平,这类英雄往往都是版本的大热门英雄。这类英雄能够很好地适应版本的各种阵容,但是由于大家都会玩,知根知底,也很容易想……游戏王攻击力无限大的怪兽,其实并非无敌,有2种方法反败为胜大家好,这里是逢魔帝骑。今天我们来说一下,在《游戏王》中如果遇到攻击力无限大的怪兽卡片时,应当怎么做才可以反败为胜的问题。很多《游戏王》的漫迷跟玩家都知道,这个系列当中的……2022最具性价比的拍照手机推荐,首选这几款,让拍摄如虎添翼导读:2022最具性价比的拍照手机推荐,首选这几款,让拍摄如虎添翼从2019年以来,相机的应用就在日常人们生活当中占据非常重要的地位,当时很多108mp的相机分辨率就已经……超实用的15个shell脚本,值得收藏1、检查MySQL主从同步状态!binbashHOSTlocalhostUSERrootPASSWDABC123IOSQLSTATUS(mysql……攻略兰生幽谷夜兰(水)培养材料攻略头条创作挑战赛自称供职于总务司的神秘人士,却又是总务司名录里的〔不存在之人〕。神出鬼没,行踪飘忽,变幻无常,这些都是她的标志。作为此次3。4版本必抽角色,你的小石头准备好……恭喜!她要官宣喜讯了还记得前几年被媒体夸是最美星二代的沈月吗?没想到Alice姐今天网上冲浪的时候,竟然刷到了她要出道的消息?!据港媒报道,邱淑贞的女儿将用艺名Ayla,在韩国出道。……冲马桶一定要盖马桶盖!实验告诉你,冲马桶不盖马桶盖风险有多大冲马桶时,你会盖上马桶盖再冲,还是敞开式直接冲?或许看完这篇文章,会让你有新的改观。人类的粪便之中,除了有食物残渣,脱落的细胞之外,还有许多细菌、病毒甚至是寄生虫等生物,……户外没网络也能上网,这黑科技绝了,蒲公英无线路由器R300A无线网络的出现带给我们生活无限的可能,除了工作、生活外,我们身边可以用到网络的地方真的很多。手机、智能产品、电脑等设备都需要联网才能发挥它最大的效率,对于需要用到网络,而又无法……冬季做好两件事,有利于养体内阳气,暖通身体近日来,全国大部分地方气温骤降。随着气温的骤降,我们也迎来了补阳和敛阳的好时间。相对于往年来看,今年的天气的确更冷一些,并且北方还有很多地方白雪皑皑,可见,这是一个寒冬的到来。……全红婵应该重视自己的饮食习惯和身体健康全红婵是我国著名的跳水运动员。她先后在东京奥运会和陕西全运会上均获得不错的成绩。一共获得了3枚金牌。这个成绩是非常优异的。因为全红婵仅仅只有14周岁,对于这个年纪来说,能够取得……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网