精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲8888| 黄视频在线免费看| 久久国产精品无码网站| 欧美大片免费观看在线观看网站推荐 | 人妻精品无码一区二区| 99riav国产精品| 在线看国产精品| 成年人小视频在线观看| 午夜精品成人av| 亚洲免费在线观看视频| 久久96国产精品久久99软件| 亚洲视频一区在线播放| 黄色精品免费| 久久亚洲精品成人| 人妻体内射精一区二区| 少妇精品在线| 欧美视频一二三区| 鲁一鲁一鲁一鲁一澡| 成人av免费| 欧美激情在线观看视频免费| 国产伦精品一区二区三区照片| 日日夜夜操视频| 精品999日本| 免费91在线视频| 亚洲av熟女国产一区二区性色| 99久久香蕉| 欧美日韩国产中文| 国产l精品国产亚洲区久久| 国产黄a三级三级三级av在线看| 91美女在线观看| 国产福利久久精品| 国产三级小视频| 美国一区二区三区在线播放| 欧美一级视频一区二区| 国产一级一片免费播放| 中文字幕一区二区精品区| 中文字幕国产日韩| www.av欧美| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩欧美另类在线| 欧美性猛交xxxx乱大交91| 欧美性理论片在线观看片免费| 午夜久久久影院| 丝袜人妻一区二区三区| 亚洲夜夜综合| 一区二区三区日韩精品| 激情五月五月婷婷| 看黄网站在线| 亚洲人精品午夜| 福利网在线观看| 成人免费在线| 一区二区三区在线视频免费| 这里只有精品66| 黄色在线视频网站| 亚洲视频图片小说| 亚洲欧洲一区二区福利| 在线免费看a| 亚洲欧洲av在线| 欧美与动交zoz0z| 新版中文在线官网| 亚洲成人免费在线| 亚洲精品无码久久久久久| 最新日韩精品| 欧美日韩在线综合| 亚洲涩涩在线观看| 欧美中文高清| 亚洲精品国产精品乱码不99按摩| 波多野结衣视频播放| 欧美三级午夜理伦三级在线观看| 日韩成人中文字幕在线观看| 无码h肉动漫在线观看| 蜜桃国内精品久久久久软件9| 亚洲欧美日韩第一区| 国产黄色录像视频| 亚洲a在线视频| 97香蕉超级碰碰久久免费软件 | 欧美三级不卡| 高清欧美性猛交xxxx黑人猛交| 色播视频在线播放| 日韩精品电影在线观看| 国产日韩一区在线| 欧美性受xxxx狂喷水| 久久综合九色欧美综合狠狠| 婷婷四房综合激情五月| 亚洲综合图区| 色偷偷88欧美精品久久久| 欧美xxxxx在线视频| 涩涩涩久久久成人精品| 精品久久久久香蕉网| 黄色片视频免费观看| 欧美一区电影| 欧美激情一级精品国产| 中文字幕免费高清网站| 国产中文字幕一区| 久久综合久久久| 国产黄色在线网站| 欧美性猛交丰臀xxxxx网站| www.久久av.com| 美女主播精品视频一二三四| 在线观看日韩av| 懂色av.com| 久久国产精品99久久久久久老狼 | 一区二区三区资源| 日本三区在线观看| 凹凸成人在线| 日韩中文字幕在线视频播放| 日本黄色片视频| 国产一区 二区 三区一级| 久久久久久久久一区| 18视频在线观看网站| 一本色道久久综合狠狠躁的推荐| 日韩视频在线观看一区二区三区| 亚洲老女人视频免费| 欧美成人免费在线观看| 成人毛片一区二区三区| 国产在线播放一区三区四| 欧美极品一区| 成人bbav| 日韩欧美在线不卡| 欧美肥妇bbwbbw| 爽好久久久欧美精品| 国产日韩一区二区三区| 思思99re6国产在线播放| 欧美午夜激情在线| 中文字幕一区二区三区人妻在线视频| 韩日一区二区三区| 日本精品久久电影| 欧美 日韩 国产 成人 在线 91| 国产精品成人免费| www.99av.com| 深夜福利久久| 日本精品久久中文字幕佐佐木| 免费的黄色av| 亚洲最大的成人av| 日本少妇一区二区三区| 亚洲啊v在线观看| 国产精品视频1区| 阿v免费在线观看| 欧美在线免费播放| av电影在线不卡| 日韩在线一区二区三区| 久久超碰亚洲| 成人美女大片| 亚洲人成绝费网站色www| 国产情侣自拍av| 99精品久久久久久| 日韩少妇内射免费播放18禁裸乳| 久久免费视频66| 欧美一级大片视频| 黄色视屏网站在线免费观看| 日韩欧美国产免费播放| 中文人妻一区二区三区| 久久一区激情| 日韩精品无码一区二区三区| 国模视频一区| 中文字幕亚洲无线码a| 亚洲天堂男人网| 最新中文字幕一区二区三区| 欧美日韩理论片| 欧美久久99| 久草精品电影| 久久婷婷五月综合色丁香| 日韩在线观看免费| 精品国产九九九| 亚洲超碰精品一区二区| 香蕉网在线播放| 日韩精品福利网| 久久久无码中文字幕久...| 日韩在线亚洲| 日本韩国在线不卡| 日本三级视频在线播放| 日韩视频一区二区| 黄色片免费观看视频| 久久精品人人做人人综合| av在线网址导航| 在线国产日韩| 日韩高清专区| 日本99精品| 人人爽久久涩噜噜噜网站| 天堂中文а√在线| 亚洲韩国日本中文字幕| 在线观看免费黄色小视频| 亚洲男人的天堂在线aⅴ视频| 精品人妻在线视频| 日韩国产在线观看一区| 男女h黄动漫啪啪无遮挡软件| 久久影视三级福利片| 国产精品久久久一区| 污视频在线看网站| 亚洲三级免费看| 亚洲AV无码一区二区三区少妇| 午夜久久久久久久久| 亚洲欧美另类日本| 99视频一区二区三区| 亚洲欧美激情网| 99精品免费| 好色先生视频污| 久久av免费| 国产日韩精品推荐| 亚洲伊人伊成久久人综合网| 性欧美xxxx交| 超碰在线caoporn| 国产一区二区三区网站| 免费观看国产视频| 777xxx欧美| 黄色片视频免费| 亚洲午夜在线视频| 日本少妇aaa| 久久综合狠狠综合| 超碰caoprom| 国产真实乱偷精品视频免| 国产男女激情视频| 国产精品毛片在线| 日韩久久久久久久久久久久| 成人在线丰满少妇av| 精品国产第一页| 在线精品视频一区| 成人免费直播live| 成人av色网站| 国产精品草莓在线免费观看| 阿v视频在线观看| 欧美激情xxxxx| 成人福利片网站| xxav国产精品美女主播| 毛片免费在线| 日韩精品视频免费专区在线播放 | 国产成人免费视频网站高清观看视频| 能在线观看的av网站| 羞羞答答国产精品www一本| 国产尤物av一区二区三区| 99久久99久久精品国产片果冰| 日本高清不卡一区二区三| 全国精品免费看| 国产在线精品一区| 国产精品对白| 国产亚洲欧美一区二区| 久久久久久毛片免费看 | 午夜视频在线网站| 蜜桃视频一区二区三区在线观看| 国产又黄又猛视频| 日本最新不卡在线| 日本www.色| 日本vs亚洲vs韩国一区三区| 日韩福利视频在线| 日韩电影在线免费观看| 黄色一级免费大片| 美日韩一级片在线观看| av在线网址导航| 国产一区二区电影| 在线免费看黄色片| 99久久99久久精品免费看蜜桃| 成人在线视频免费播放| 99riav久久精品riav| 真人bbbbbbbbb毛片| 91免费观看在线| 四虎成人免费影院| 中文字幕亚洲区| 少妇高潮一区二区三区喷水| 成人免费在线视频观看| 强行糟蹋人妻hd中文| 亚洲一区中文日韩| 国产一级精品视频| 欧美日韩黄色大片| 中文字幕一区二区三区人妻四季 | 女女调教被c哭捆绑喷水百合| 成人免费视频播放| 国产三级视频网站| 国产喷白浆一区二区三区| 国产黄色录像视频| 亚洲女同ⅹxx女同tv| 免费网站观看www在线观| 天天亚洲美女在线视频| 日韩乱码一区二区三区| 欧美一区二区三区白人| 天堂在线视频免费| 中文字幕日韩精品在线观看| 69成人在线| 午夜精品在线视频| 超薄肉色丝袜脚交一区二区| 成人国产亚洲精品a区天堂华泰| 亚洲三区欧美一区国产二区| 蜜桃传媒视频麻豆第一区免费观看 | 日本在线观看一区| 亚洲欧洲日韩| 波多野结衣家庭教师在线| 免费久久精品视频| 日本50路肥熟bbw| 中文字幕第一区二区| 欧美另类视频在线观看| 日本高清无吗v一区| 国产后入清纯学生妹| 亚洲毛片在线看| 日本高清在线观看| 国产精品久久精品| 老司机成人在线| 最新欧美日韩亚洲| 国产农村妇女精品一二区| 天天久久综合网| 久久久久久97三级| 激情四射综合网| 欧美日韩国产综合一区二区三区| 日本高清视频免费看| 久久天堂av综合合色| 男人最爱成人网| 国产精品区一区二区三在线播放| 欧美三级美国一级| 国产原创中文在线观看| 狠狠色狠狠色综合系列| 白丝女仆被免费网站| 亚洲一区二区在线观看视频 | 欧美videossexotv100| av资源在线观看免费高清| 性视频1819p久久| 三级欧美日韩| 日本不卡一区二区三区四区| 先锋影音国产一区| 人妻激情偷乱频一区二区三区| 亚洲欧美一区二区在线观看| 天堂中文字幕在线观看| 精品国产一区二区三区不卡 | 久久6免费视频| 国产午夜精品福利| 日本道在线观看| 亚洲国产精品嫩草影院久久| 直接在线观看的三级网址| 国产精品一区av| 欧美日韩精品在线一区| 人妻熟女一二三区夜夜爱| av电影一区二区| 91精品国产高潮对白| 日韩一区二区三区电影在线观看| av电影在线观看网址| 国产精欧美一区二区三区| 欧美日韩麻豆| 免费毛片小视频| 99热精品国产| 在线观看免费国产视频| 亚洲国产日韩精品在线| av蜜臀在线| 好吊色欧美一区二区三区四区| 精久久久久久| 99re久久精品国产| 黑人巨大精品欧美一区二区| 四虎精品成人免费网站| 97视频免费观看| 妖精一区二区三区精品视频| 久久国产乱子伦免费精品| 26uuu欧美日本| 国产精品无码粉嫩小泬| 在线一区二区日韩| 亚洲成人精品综合在线| 中文字幕成人一区| 国产一区二区中文字幕| 久草网站在线观看| 亚洲国产精品成人精品| 麻豆蜜桃在线观看| 日本不卡一二三区| 精品一区二区三区在线观看国产| 免费看特级毛片| 精品国产一区二区三区四区四| 91禁在线看| 日本一区二区三区视频免费看| 免费高清视频精品| 综合五月激情网| 日韩成人av在线| 免费成人黄色网| 日韩欧美精品免费| 久久天堂av综合合色蜜桃网| www.av88| 欧美激情按摩在线| 综合综合综合综合综合网| 五月婷婷六月丁香激情| 亚洲自拍与偷拍| 欧美日韩国产中文字幕在线| 国产女人18毛片水18精品| 欧美日韩午夜| 91精品人妻一区二区| 欧美日韩大陆一区二区| 国精一区二区三区| 色一情一乱一伦一区二区三区| 国产在线一区二区| 久久亚洲精品国产| 久久久国产一区二区三区| 国产成人av毛片| 69久久久久久| 亚洲成av人在线观看| 9色在线视频网站| 国产在线一区二区三区播放| 奇米四色…亚洲| 国产中文字字幕乱码无限| 亚洲性夜色噜噜噜7777| 亚洲精品a区| 一级特黄性色生活片| 亚洲第一在线综合网站| 午夜视频在线观看免费视频| 国产精品美女黄网| 激情综合色播激情啊| 亚洲熟女综合色一区二区三区| 久久久999精品免费| 亚洲va久久久噜噜噜久久|