成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript中的reduce()的5個用例

開發 前端
reduce()方法對數組中的每一個元素執行一個reducer函數(由你提供),從而得到一個單一的輸出值。

[[335443]]

reduce()方法對數組中的每一個元素執行一個reducer函數(由你提供),從而得到一個單一的輸出值。

reduce() 方法將一個數組中的所有元素還原成一個單一的輸出值,輸出值可以是數字、對象或字符串。reduce() 方法有兩個參數,第一個是回調函數,第二個是初始值。

回調函數

回調函數在數組的每個元素上執行。回調函數的返回值是累加結果,并作為下一次調用回調函數的參數提供。回調函數帶有四個參數。

  • Accumulator(累加器)——累加器累加回調函數的返回值。
  • Current Value(當前值)——處理數組的當前元素。
  • Current Index(當前索引)——處理數組當前元素的索引。
  • Source Array(源數組)

Current Index 和 Source Array 是可選的。

初始值

如果指定了初始值,則將累加器設置為 initialValue 作為初始元素。否則,將累加器設置為數組的第一個元素作為初始元素。

  1. arr.reduce(callback(accumulator, currentValue[,index[,array]])[, initialValue]) 

在下面的代碼片段中,第一個累加器(accumulator)被分配了初始值0。currentValue是正在處理的 numbersArr 數組的元素。在這里,currentValue 被添加到累加器,在下次調用回調函數時,會將返回值作為參數提供。

  1. const numbersArr = [67, 90, 100, 37, 60]; 
  2.  
  3. const total = numbersArr.reduce(function(accumulator, currentValue){ 
  4.     console.log("accumulator is " + accumulator + " current value is " + currentValue); 
  5.     return accumulator + currentValue; 
  6. }, 0); 
  7.  
  8. console.log("total : "+ total); 

輸出

  1. accumulator is 0 current value is 67 
  2. accumulator is 67 current value is 90 
  3. accumulator is 157 current value is 100 
  4. accumulator is 257 current value is 37 
  5. accumulator is 294 current value is 60 
  6. total : 354 

JavaScript reduce用例

1.對數組的所有值求和

在下面的代碼中,studentResult 數組具有5個數字。使用 reduce() 方法,將數組減少為單個值,該值將 studentResult 數組的所有值和結果分配給 total。

  1. const studentResult = [67, 90, 100, 37, 60]; 
  2.  
  3. const total = studentResult.reduce((accumulator, currentValue) => accumulator +currentValue, 0); 
  4.  
  5. console.log(total); // 354 

2.對象數組中的數值之和

通常,我們從后端獲取數據作為對象數組,因此,reduce() 方法有助于管理我們的前端邏輯。在下面的代碼中,studentResult 對象數組有三個科目,這里,currentValue.marks 取了 studentResult 對象數組中每個科目的分數。

  1. const studentResult = [ 
  2.   { subject: '數學', marks: 78 }, 
  3.   { subject: '物理', marks: 80 }, 
  4.   { subject: '化學', marks: 93 } 
  5. ]; 
  6.  
  7. const total = studentResult.reduce((accumulator, currentValue) => accumulator + currentValue.marks, 0); 
  8.  
  9. console.log(total); // 251 

3.展平數組

“展平數組”是指將多維數組轉換為一維。在下面的代碼中,twoDArr 2維數組被轉換為oneDArr 一維數組。此處,第一個 [1,2] 數組分配給累加器 accumulator,然后 twoDArr 數組的其余每個元素都連接到累加器。

  1. const twoDArr = [ [1,2], [3,4], [5,6], [7,8] , [9,10] ]; 
  2.  
  3. const oneDArr = twoDArr.reduce((accumulator, currentValue) => accumulator.concat(currentValue)); 
  4.  
  5. console.log(oneDArr); 
  6. // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 

4.按屬性分組對象

根據對象的屬性,我們可以使用 reduce() 方法將對象數組分為幾組。通過下面的代碼片段,你可以清楚地理解這個概念。這里,result 對象數組有五個對象,每個對象都有 subject 和 marks 屬性。如果分數大于或等于50,則該主題通過,否則,主題失敗。reduce() 用于將結果分組為通過和失敗。首先,將 initialValue 分配給累加器,然后 push() 方法在檢查條件之后將當前對象添加到 pass 和 fail 屬性中作為對象數組。

  1. const result = [ 
  2.   {subject: '物理', marks: 41}, 
  3.   {subject: '化學', marks: 59}, 
  4.   {subject: '高等數學', marks: 36}, 
  5.   {subject: '應用數學', marks: 90}, 
  6.   {subject: '英語', marks: 64}, 
  7. ]; 
  8.  
  9. let initialValue = { 
  10.   pass: [], 
  11.   fail: [] 
  12.  
  13. const groupedResult = result.reduce((accumulator, current) => { 
  14.   (current.marks >= 50) ? accumulator.pass.push(current) : accumulator.fail.push(current); 
  15.   return accumulator; 
  16. }, initialValue); 
  17.  
  18. console.log(groupedResult); 

輸出

  1.  pass: [ 
  2.   { subject: ‘化學’, marks: 59 }, 
  3.   { subject: ‘應用數學’, marks: 90 }, 
  4.   { subject: ‘英語’, marks: 64 } 
  5.  ], 
  6.  fail: [ 
  7.   { subject: ‘物理’, marks: 41 }, 
  8.   { subject: ‘高等數學’, marks: 36 } 
  9.  ] 

5.刪除數組中的重復項

在下面的代碼片段中,刪除了 plicatedArr 數組中的重復項。首先,將一個空數組分配給累加器作為初始值。accumulator.includes() 檢查 duplicatedArr 數組的每個元素是否已經在累加器中可用。如果 currentValue 在累加器中不可用,則使用push() 將其添加。

  1. const duplicatedsArr = [1, 5, 6, 5, 7, 1, 6, 8, 9, 7]; 
  2.  
  3. const removeDuplicatedArr = duplicatedsArr.reduce((accumulator, currentValue) => { 
  4.   if(!accumulator.includes(currentValue)){ 
  5.     accumulator.push(currentValue); 
  6.   } 
  7.   return accumulator; 
  8. }, []); 
  9.  
  10. console.log(removeDuplicatedArr); 
  11. // [ 1, 5, 6, 7, 8, 9 ] 

 

總結

在本文中,我們討論了數組 reduce() 方法。首先介紹 reduce() 方法,然后,使用一個簡單的示例討論其行為。最后,通過示例討論了 reduce() 方法最常見的五個用例。如果你是JavaScript的初學者,那么本文將對你有所幫助。

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2020-07-19 15:32:13

JavaScript開發技術

2019-12-05 10:59:08

云計算存儲數據

2020-08-01 15:37:19

5G無線技術網絡

2021-06-03 19:28:44

LPWAN環境監測工業4.0

2020-07-22 01:30:11

農業物聯網IOT

2022-04-04 21:26:05

物聯網汽車

2019-12-03 19:09:19

JavaScriptNumbers阿里云計算

2022-07-06 10:04:45

JavaScript數組前端

2020-06-05 11:15:53

物聯網醫療保健技術

2022-06-08 10:42:34

ReduceJavaScript技巧

2018-08-21 05:03:04

NV overlay網絡虛擬化網絡

2022-11-15 10:01:27

2021-09-28 09:19:02

CIO5G首席信息官

2021-07-01 11:56:51

JavaScript開發代碼

2024-04-17 16:26:25

邊緣計算云計算制造業

2021-02-07 09:49:45

人工智能AI物聯網

2010-07-08 11:27:00

UML用例建模

2020-02-06 15:17:13

物聯網醫療保健邊緣計算

2024-09-24 15:36:09

2022-04-21 15:35:24

工業物聯網數據泄露能源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频在线观看一区二区三区 | 欧美一区二区在线视频 | 大陆一级毛片免费视频观看 | 日韩免费 | 久久成人免费视频 | 午夜激情免费 | 欧美日韩国产精品一区 | 日韩在线观看精品 | av在线一区二区 | 天天操 天天操 | 日韩av成人在线观看 | 污视频免费在线观看 | 久久51| 高清视频一区二区三区 | 亚洲高清久久 | 亚洲一区二区三区四区五区午夜 | 日韩在线xx | 一区二区国产精品 | 91精品国产91久久久久久密臀 | 综合久久99 | 国产一区二区在线免费观看 | 天天操狠狠操 | 欧美一级免费看 | 国产精品久久久久久久久图文区 | 三级在线观看 | 久草视频在线播放 | 久久天堂 | 91久久精 | 国产高清在线精品 | 国产精品免费一区二区三区四区 | 99reav| 国产日韩亚洲欧美 | 精品美女视频在免费观看 | 欧美三级三级三级爽爽爽 | 伊人久久在线 | 亚洲成人福利在线观看 | 福利一区二区 | 亚州国产| 国产精品日韩欧美 | 天天干天天插天天 | 国产精品视频网站 |