精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JS數(shù)組Reduce的妙用,收藏等于學會!

開發(fā) 前端
說到處理數(shù)組的方法,想必大家都不陌生了,今天我們一起來學習下理數(shù)組常見場景下的方法。

[[419162]]

本文轉載自微信公眾號「前端發(fā)現(xiàn)」,作者前端發(fā)現(xiàn)者。轉載本文請聯(lián)系前端發(fā)現(xiàn)公眾號。

說到處理數(shù)組的方法,想必大家都不陌生了,今天我們一起來學習下理數(shù)組常見場景下的方法。

首先來看看 reduce 方法可以傳入哪些參數(shù)

  1. function(pre,cur,index,arr) 
  • pre:必需,初始值或計算結束后的返回值
  • cur:非必需,當前處理的元素
  • index:非必需,當前處理元素的索引
  • arr:非必需,當前元素所屬的數(shù)組對象

直接看看

  1. const list = [1,2,3,4,5] 
  2. const result = list.reduce(function (pre, cur, index, arr) { 
  3.   console.log('pre:' + pre, 'cur:' + cur, 'index:' + index
  4.   return pre + cur 
  5. }) 
  6. console.log(result) 
  7.  
  8. // => pre:1 cur:2 index:1 
  9. // => pre:3 cur:3 index:2 
  10. // => pre:6 cur:4 index:3 
  11. // => pre:10 cur:5 index:4 
  12. // => 15 

可以看到,第一輪pre的值是數(shù)組的第一個值,然后當前處理元素直接是元素的第二個數(shù)據(jù),索引是數(shù)組的1。第二輪的pre就是第一次邏輯處理 return pre + cur 返回的結果(即3)。以此類推...共循環(huán)4輪。

再來看個相乘的處理邏輯的:

  1. const list = [1,2,3,4,5] 
  2. const result = list.reduce(function (pre, cur, index, arr) { 
  3.   console.log('pre:' + pre, 'cur:' + cur, 'index:' + index
  4.   return pre * cur 
  5. }) 
  6. console.log(result) 
  7.  
  8. // => pre:1 cur:2 index:1 
  9. // => pre:2 cur:3 index:2 
  10. // => pre:6 cur:4 index:3 
  11. // => pre:24 cur:5 index:4 
  12. // => 120 

看著這么復雜,能舉個再簡單的例子嗎?別問,問就是有!

  1. const result = list.reduce((pre, cur) => pre + cur) 
  2. console.log(result) // => 15 

簡單后再來個高級點的嘗鮮下。

數(shù)組去重

將數(shù)組傳輸之前,我們先來了解下 reduce 的另外一個,即 initialValue。它是代表傳遞給函數(shù)的初始值,「可以理解為給pre設置了默認的值」。

  1. const list = [1,1,3,5,5,7,9] 
  2. let arr = list.reduce((pre,cur)=>{ 
  3.   if(!pre.includes(cur)){ 
  4.     return pre.concat(cur) 
  5.   }else
  6.     return pre 
  7.   } 
  8. },[]) // => 給pre設置默認的空數(shù)組[] 
  9. console.log(arr) // => [1, 3, 5, 7, 9] 

可以看到list數(shù)組的長度為7,共循環(huán)7次(設置默認的空數(shù)組,導致cur第一輪是數(shù)組的第一個數(shù)據(jù))。每循環(huán)一次就判斷pre數(shù)組里存不存在當前循環(huán)的元素,若不存在則加入到pre數(shù)組去,否則就直接退出當前循環(huán)。

數(shù)組二維轉一維

  1. let arr = [1,2,[4, 6], [1, 6], [2, 2]] 
  2. let newArr = arr.reduce((pre,cur)=>{ 
  3.   return pre.concat(cur) 
  4. },[]) 
  5. console.log(newArr) // => [1, 2, 4, 6, 1, 6, 2, 2] 

這里其實也就是利用了數(shù)組的 concat 方法,跟上面的使用也是大同小異,理順一下就可以理解的了。

數(shù)組多維轉一維

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

這里使用了 三目運算 、 concat 數(shù)據(jù)拼接 、遞歸 的思路完成。先判斷當前處理的元素(有可能是數(shù)組)是不是數(shù)組(Array.isArray(cur)),如果是再次執(zhí)行newArr,否則就直接處理當前元素,即將cur拼接進之前處理的數(shù)組中。

計算元素出現(xiàn)個數(shù)

講解這個之前我們先來回憶下for...in的用法:

for...in 聲明用于對數(shù)組或者對象的屬性進行循環(huán)/迭代操作。

直接上

  1. var arr = ['張三','李四','王五']     
  2. for (let x in arr)   
  3. {   
  4.   console.log(x) 
  5.   // => 張三 
  6.   // => 李四 
  7.   // => 王五 
  8. }   

可以看到當arr為數(shù)組時 x 相當于 for 循環(huán)的?? 標

那當arr為對象呢?

  1. const obj = {   
  2.   name"張三",   
  3.   age: 18,   
  4.   height: "180"   
  5. }   
  6. for(let key in obj){   
  7.   console.log(key)  
  8.   // => name 
  9.   // => age 
  10.   // => height 
  11. }   

可以看到當循環(huán)的“對象”是對象時,循環(huán)的單項就是對象的屬性。

所以我們可以根據(jù)這個特性來判斷對象是否為數(shù)組/對象的元素/屬性。

  1. // 數(shù)組時判斷下標 
  2. let arr = ["a","b","2","3"]  
  3. console.log("b" in arr) // => false 
  4. console.log(2 in arr) // => true 
  5.  
  6. // 對象時判斷屬性 
  7. let obj = {a:"a",b:"b",c:"2",d:"3"}  
  8. console.log("b" in obj) // => true 
  9. console.log(2 in obj) // => false 

好的,回憶完這些知識,我們來看看怎么完成這個需求

  1. let names = ['張三''李四''張三''王五''王五''王五'
  2. let total = names.reduce((pre,cur)=>{ 
  3.   if(cur in pre){ 
  4.     pre[cur]++ 
  5.     console.log("判斷為真:"
  6.     console.log(pre) 
  7.   }else
  8.     pre[cur] = 1 
  9.     console.log("判斷為假:"
  10.     console.log(pre) 
  11.   } 
  12.   return pre 
  13. },{}) 
  14. console.log(total); // => {張三: 2, 李四: 1, 王五: 3} 

首先先傳入一個{}對象,說明初始的pre為{}。那么第一輪判斷if的時候就變成 '張三' in {} 很明顯此時判斷條件是 false 。所以就執(zhí)行 else 里面的邏輯后變成:{'張三':1}。第二輪時 李四 也是如此。當?shù)谌啎r再次遇到“張三”,此時對象是 {'張三':1,'李四':1} ,所以if判斷是 true ,所以張三直接+1。來看看打印情況:

  1. 判斷為假: 
  2. // => {張三: 1} 
  3. 判斷為假: 
  4. // => {張三: 1, 李四: 1} 
  5. 判斷為真: 
  6. // => {張三: 2, 李四: 1} 
  7. 判斷為假: 
  8. // => {張三: 2, 李四: 1, 王五: 1} 
  9. 判斷為真: 
  10. // => {張三: 2, 李四: 1, 王五: 2} 
  11. 判斷為真: 
  12. // => {張三: 2, 李四: 1, 王五: 3} 

屬性求和

  1. const list = [ 
  2.   { 
  3.     name'張三'
  4.     age: 18 
  5.   }, 
  6.   { 
  7.     name'李四'
  8.     age: 20 
  9.   }, 
  10.   { 
  11.     name'王五'
  12.     age: 22 
  13.   } 
  14. let total = list.reduce((pre, cur) => { 
  15.   console.log(cur)  
  16.   // => {name'張三', age: 18} 
  17.   // => {name'李四', age: 20} 
  18.   // => {name'王五', age: 22} 
  19.   return cur.age + pre 
  20. }, 0) 
  21. console.log(total) // => 60 

如此是不是省了使用 map 去求和呢?更簡便可以這么寫:

  1. let total = list.reduce((pre, cur) => cur.age + pre, 0) 

到此,今日的前端發(fā)現(xiàn)知識分享就到此結束了。

 

責任編輯:武曉燕 來源: 前端發(fā)現(xiàn)
相關推薦

2023-02-01 08:31:48

2023-01-09 18:15:21

數(shù)組Python類型

2011-07-20 17:54:02

C++

2025-04-23 08:55:00

函數(shù)編程JavaScript

2022-10-21 08:02:40

reduce?初始值循環(huán)

2021-09-29 06:03:37

JavaScriptreduce() 前端

2024-04-07 08:15:13

Go語言工具

2021-03-22 06:28:44

reducemap函數(shù)

2023-05-08 08:11:55

KubernetesK8S

2009-10-19 11:26:08

Scala循環(huán)數(shù)組

2023-08-01 09:46:57

虛擬鍵盤API

2010-09-08 16:26:26

SQL循環(huán)語句

2023-11-27 19:35:01

C++extern

2010-09-26 09:50:36

SQL Where子句

2024-11-28 10:09:06

2022-06-01 08:12:32

JS類數(shù)組對象

2022-07-06 10:04:45

JavaScript數(shù)組前端

2021-03-05 07:45:59

JSreducemap

2020-02-13 18:05:18

數(shù)組reduce前端

2019-11-11 21:24:42

HadoopHbase分布式
點贊
收藏

51CTO技術棧公眾號

丝袜诱惑亚洲看片| 窝窝社区一区二区| 亚洲一区二区三区四区在线观看 | 毛片基地在线观看| 国产一区二区亚洲| 欧美一区二区播放| 国产精品沙发午睡系列| 色网站在线看| 9l国产精品久久久久麻豆| 国产精品久久久久不卡| 欧洲猛交xxxx乱大交3| 日本妇女一区| 欧美精品1区2区3区| 久久久亚洲精品无码| 日韩黄色影院| www激情久久| 亚洲专区中文字幕| 国内av在线播放| 亚洲精选成人| 久久不射电影网| 法国空姐电影在线观看| 草莓视频一区二区三区| 欧美日韩日日摸| 久久国产成人精品国产成人亚洲| 国产黄色在线网站| 国产日韩欧美一区二区三区综合| 国产精品18毛片一区二区| 成人一级免费视频| 亚洲人成免费| 色综合久久88色综合天天看泰| 中文字幕丰满乱子伦无码专区| 欧美黄色一级| 欧美日韩高清在线播放| 69堂免费视频| av在线网页| 亚洲色图视频网| 午夜精品一区二区在线观看| 蜜桃成人在线视频| 97精品久久久久中文字幕| 91精品国产综合久久久久久丝袜 | 麻豆成人av| 亚洲欧美另类一区| 国产很黄免费观看久久| 国产欧美精品久久久| av一级在线观看| 一区二区三区国产盗摄| 午夜精品一区二区三区视频免费看| 国产日韩欧美在线观看视频| 偷偷www综合久久久久久久| 亚洲天堂视频在线观看| 久久久久久国产精品无码| 国产图片一区| 亚洲成人免费网站| 久久性爱视频网站| xxxxxhd亚洲人hd| 精品久久久久久久一区二区蜜臀| 三级av免费看| 精品国产第一国产综合精品| 日韩一区二区三区在线| 中国老熟女重囗味hdxx| www.爱久久| 亚洲精品久久在线| 手机免费看av片| 日韩免费电影在线观看| 日韩精品在线私人| 亚洲女优在线观看| 日韩激情图片| 久久高清视频免费| 国产中文字幕免费| 亚洲美女少妇无套啪啪呻吟| 欧美一级视频免费在线观看| 国产69精品久久久久久久久久| 亚洲欧美视频| 国产精品久久久久av免费| 91黄色在线视频| 国产成人在线看| 国产伦精品一区二区三区免| 日本在线视频1区| 国产欧美日韩另类视频免费观看| 亚洲欧洲国产日韩精品| a视频在线观看| 五月激情综合婷婷| 国产一区亚洲二区三区| 欧美激情啪啪| 精品少妇一区二区三区视频免付费| 精品人妻在线视频| 亚洲精品中文字幕99999| 中文字幕日韩综合av| 中文字幕av久久爽av| 一区二区三区导航| 国产欧美日韩专区发布| 成人激情四射网| 久久伊99综合婷婷久久伊| 亚洲一区二区三区精品视频| 色婷婷视频在线观看| 色综合久久中文综合久久97| 精品亚洲视频在线| 久久资源综合| 日韩午夜在线视频| 五月婷婷亚洲综合| 九一九一国产精品| 韩国成人一区| 精品孕妇一区二区三区| 欧美日韩免费网站| 超碰91在线播放| 日韩三级毛片| 久久综合色影院| 亚洲第一网站在线观看| 国产成人鲁色资源国产91色综| 欧美三级网色| 丁香影院在线| 欧美日韩国产电影| 无码熟妇人妻av| 欧美日韩一区自拍| 国产精品一二区| 日本国产在线| 亚洲国产成人高清精品| 亚洲精品在线视频播放| 精品国产aⅴ| 欧美亚洲在线视频| 精品国产99久久久久久宅男i| 国产日韩欧美a| 你懂的av在线| 91成人在线精品视频| 日韩在线播放一区| 中文字幕 视频一区| 成人高清视频在线观看| 99精品一级欧美片免费播放| 99re66热这里只有精品4| 欧美xxxxx牲另类人与| 欧美日韩午夜视频| 免费成人在线视频观看| 欧美日韩精品久久| 黄在线观看免费网站ktv| 日韩美女在线视频 | 欧美先锋资源| 日本三级韩国三级久久| 天堂v视频永久在线播放| 亚洲成在人线在线播放| japan高清日本乱xxxxx| 欧美一区91| 91亚洲精品在线观看| 在线视频1区2区| 欧美影视一区二区三区| 波多野结衣一本| 国产手机视频一区二区| 国产在线一区二区三区播放| 春色校园综合激情亚洲| 亚洲第一视频在线观看| 国产精品99re| 粉嫩久久99精品久久久久久夜| 伊人再见免费在线观看高清版| 国产麻豆一区二区三区| 中日韩午夜理伦电影免费| 中文字幕有码视频| 国产精品美女久久久久久2018 | 国产一区不卡在线| 黑人巨茎大战欧美白妇| 久久av偷拍| 欧美极品少妇xxxxⅹ裸体艺术 | 国产午夜精品全部视频在线播放 | 欧美日韩中文字幕在线观看| 国内不卡的二区三区中文字幕| 性欧美18一19内谢| 免费一区二区三区在线视频| 欧美日韩福利视频| 人人妻人人澡人人爽久久av| 精品日本高清在线播放| 这里只有久久精品| 另类综合日韩欧美亚洲| 久久观看最新视频| 精品国产午夜肉伦伦影院| 欧美中文在线视频| 日本中文字幕在线2020| 日韩欧美一级精品久久| 免费观看一区二区三区毛片| 中文一区二区在线观看 | 91香蕉视频在线| 91香蕉视频污版| 一区二区三区四区在线观看国产日韩 | 四虎成人精品永久免费av| 久久久一区二区| 欧美性猛交xxxx乱大交91| 亚洲国产专区| 亚洲视频在线二区| 99re6热只有精品免费观看| 4444欧美成人kkkk| 免费a级人成a大片在线观看| 亚洲成在人线av| 国产男人搡女人免费视频| 亚洲精品视频在线观看免费| 毛片网站免费观看| 国产在线不卡一卡二卡三卡四卡| 国产欧美日韩网站| 99视频精品全国免费| 狠狠干一区二区| 亚洲电影二区| 欧美专区在线视频| 亚洲图区一区| 尤物九九久久国产精品的分类| 国产xxxxxx| 91激情在线视频| 久久久精品一区二区涩爱| 国产午夜亚洲精品午夜鲁丝片 | 欧美精品videossex性护士| 免费在线性爱视频| 欧美精品色一区二区三区| 日韩免费一级片| 综合精品久久久| 色欲AV无码精品一区二区久久 | 亚洲a∨一区二区三区| 97se亚洲| 成人免费激情视频| 日韩av电影资源网| 久久久久久免费精品| 天天影视久久综合| 亚洲欧美日韩天堂一区二区| 亚洲美女性生活| 884aa四虎影成人精品一区| 亚洲av中文无码乱人伦在线视色| 夜色激情一区二区| 久久精品亚洲a| 国产色91在线| 国产精品无码午夜福利| a在线播放不卡| 在线观看一区二区三区视频| 激情五月播播久久久精品| 我看黄色一级片| 玖玖在线精品| 久久精品99国产| 亚洲欧美日韩国产| 国产视频一视频二| 伊人久久亚洲热| 欧美这里只有精品| 国产综合精品一区| 少妇一晚三次一区二区三区| 亚洲高清资源在线观看| 最新国产精品久久| 99久久综合| 免费成人进口网站| 一区二区三区午夜视频| 久久免费视频2| 亚洲国产老妈| 国产又爽又黄ai换脸| 亚洲综合色站| 国产av第一区| 自由日本语亚洲人高潮| 日韩不卡视频一区二区| 欧美日本在线| 拔插拔插海外华人免费| 99精品国产一区二区青青牛奶 | 日韩av中文在线观看| xxxx一级片| 久久精品国产久精国产| 欧美一级特黄aaa| 国产精品一级黄| 秘密基地免费观看完整版中文| 国产99精品视频| a天堂视频在线观看| 91毛片在线观看| 久久久久久久久久久国产精品| 久久精品视频免费| 99久久99久久精品免费| 综合分类小说区另类春色亚洲小说欧美| 亚洲一级生活片| 亚洲精品国产一区二区三区四区在线 | 亚洲精华国产精华精华液网站| 欧美成人一区二区三区在线观看 | 在线亚洲午夜片av大片| 日韩三级影院| 欧美激情奇米色| 一区二区乱码| 国产精品人人做人人爽| 香蕉成人app| 欧美一区三区二区在线观看| 久久中文亚洲字幕| 日本熟妇人妻xxxx| 日韩av一级电影| 超碰91在线播放| 26uuu色噜噜精品一区| 91社区视频在线观看| 亚洲激情成人在线| 亚洲婷婷综合网| 在线综合+亚洲+欧美中文字幕| 亚洲精品网站在线| 在线观看日韩www视频免费| 呦呦在线视频| 日韩av免费在线观看| 久久av网站| 日本一区二区三区视频在线观看 | 亚洲成人福利片| 国产又粗又猛又黄视频| 日韩免费性生活视频播放| 毛片在线播放网址| 九九视频这里只有精品| 蜜桃成人精品| 国产91亚洲精品一区二区三区| 精品国产一区二区三区久久久樱花 | 亚洲精品一区二区三区av| 欧美电影一区| 国产aaa一级片| 国产成人精品综合在线观看| 欧美三级视频网站| 五月婷婷久久综合| 91禁在线观看| 亚洲人成网站免费播放| sqte在线播放| 成人国产在线视频| 精品一区二区三区在线| 亚洲精品无码国产| 韩国一区二区三区| av电影在线不卡| 欧美午夜美女看片| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 日韩在线资源网| 亚洲第一二三四区| 国产亚洲自拍偷拍| 欧美成人嫩草网站| 亚洲高清免费在线观看| 国产亚洲美州欧州综合国| 日韩av一二三区| 精品久久久影院| 五月天激情在线| 成人欧美一区二区三区黑人孕妇| 欧美日韩中文一区二区| 777久久久精品一区二区三区| 国产福利不卡视频| 91嫩草|国产丨精品入口| 欧美午夜电影网| 成人在线观看黄色| 国产aⅴ夜夜欢一区二区三区 | 欧美综合社区国产| 日本一区网站| 丝袜美腿亚洲综合| 亚洲天堂久久新| 欧美午夜精品久久久久久浪潮 | 日韩中文字幕网| 99久久亚洲国产日韩美女 | 97视频在线观看网站| 国产精品91久久久| 精品国产一区二区三区噜噜噜 | 免费无码av片在线观看| av中文字幕亚洲| 欧美日韩综合在线观看| 亚洲免费av网址| 欧美一区国产| 五码日韩精品一区二区三区视频| 日韩国产精品久久久久久亚洲| 一色道久久88加勒比一| 色94色欧美sute亚洲线路一ni| 激情小视频在线| 国产精品普通话| 亚洲精品极品少妇16p| 欧美视频亚洲图片| 一区二区三区在线免费| 亚洲精品字幕在线| 91国在线精品国内播放| 亚洲制服一区| 鲁一鲁一鲁一鲁一av| 成人免费在线播放视频| 精品国产无码AV| 97热精品视频官网| 免费成人av| 一级做a免费视频| 一区二区三区高清| 欧美一级性视频| 日韩免费在线视频| 97视频热人人精品免费| 色婷婷狠狠18禁久久| 欧美性极品xxxx做受| 在线观看国产原创自拍视频| 亚洲一区中文字幕在线观看| 亚洲黄色大片| 青娱乐国产视频| 日韩一区二区三区在线| 性欧美freesex顶级少妇| 日韩av一级大片| 国产电影一区在线| 国产精品久久久久久99| 在线看欧美日韩| 2020国产精品极品色在线观看| 免费日韩视频在线观看| 亚洲欧洲av一区二区三区久久| 亚洲黄色精品视频| 国产精品va在线播放| 午夜激情一区| 久久久久久九九九九九| 欧美一级午夜免费电影| 黄色成人免费网| 日产精品久久久久久久蜜臀| 久久久国产一区二区三区四区小说 | 亚洲精品在线免费观看视频| 制服诱惑亚洲| a级免费在线观看| 国产欧美精品区一区二区三区 | 国产精品毛片大码女人| 高h震动喷水双性1v1| 国产欧美久久久久久| 亚洲精品极品| 久久国产美女视频|