JavaScript reduce()
reduce() 方法具有累積計算的功能,具體規則下面會具體介紹,ES5新增。
更多 Array 陣列內容可以參閱 JavaScript Array 陣列 一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼array.reduce(callbackfn[, initial])
引數解析:
(1).callbackfn(previousValue, currentValue, currentIndex, array):
必需,回撥函式,以索引升序方式對陣列每一個元素執行一次此回撥函式。
具有四個引數:
(1).前一次回撥函式的返回值。
(2).當前陣列元素的值。
(3).當前陣列元素的索引。
(4).當前陣列物件。
(2).initial:可選,如果指定此引數,將用作初始積累值。
特別說明:回撥函式第一次呼叫時,是否為 reduce() 提供 initial 引數有重要影響。
提供 initial 引數:
(1).previousValue 引數值為 initial 值。
(2).currentValue 引數是陣列中的第一個元素值。
未提供 initial引數:
(1).previousValue 引數值是陣列中的第一個元素值。
(2).currentValue 引數值是陣列中的第二個元素的值。
reduce() 方法返回值是回撥函式最後一次執行返回的累積結果。
瀏覽器相容:
(1).IE9+ 瀏覽器支援此方法。
(2).edge 瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera 瀏覽器支援此方法。
(6).safari 瀏覽器支援此方法。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let num=0; function appendCurrent (previousValue,currentValue){ num++; return previousValue + ":" + currentValue; } let elements=["antzone", "softwhy.com", 3, "青島市南區"]; let result=elements.reduce(appendCurrent); console.log(num); console.log(result);
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).沒有為 reduce() 方法提供第二個引數。
(2).那麼回撥函式初次呼叫時 previousValue 引數值就是陣列第一個元素值,currentValue 是第二個元素值。
(3).初次呼叫,函式內部實現陣列第一個元素和第二個元素拼接效果,生成 "antzone:softwhy.com" 。
(4).第二個呼叫回撥函式,previousValue 引數值是上一次回撥函式的返回值 "antzone:softwhy.com" ,第二個引數值是陣列第三個元素值。
(5).最後 reduce() 方法的返回值就是回撥函式最後一次執行的返回值。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let num=0; function addRounded(previousValue, currentValue){ num++; return previousValue + Math.round(currentValue); } let numbers=[10.9,15.4,0.5]; let result=numbers.reduce(addRounded,0); console.log(num); console.log(result);
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).對 reduce() 方法提供了兩個引數。
(2).第二個引數 initial 規定累積起始值。
(3).reduce() 方法規定引數 initial,回撥函式第一個引數是 initial,回撥函式第二個引數是陣列第一個元素值。
(4).回撥函式第一次執行完畢,它的返回值作為回撥函式第二次執行的第一個引數值,第二個引數是陣列的第二個元素值,以此類推。
(5).最後 reduce() 方法的返回值就是回撥函式最後一次執行的返回值。
相關文章
- JavaScript reduce()的使用JavaScript
- JavaScript(1)高階函式filter、map、reduceJavaScript函式Filter
- javascript高階函式---filter---map---reduceJavaScript函式Filter
- Javascript中陣列方法reduce的妙用之處JavaScript陣列
- JavaScript 4/30: 陣列的 map, filter 和 reduce 用法JavaScript陣列Filter
- JavaScript系列--JavaScript陣列高階函式reduce()方法詳解及奇淫技巧JavaScript陣列函式
- 在JavaScript函數語言程式設計裡使用Map和Reduce方法JavaScript函數程式設計
- 陣列reduce()方法陣列
- JS中reduce方法JS
- reduce the database log fileDatabase
- reduce() 多種用法
- 一張圖看懂JavaScript中陣列的迭代方法:forEach、map、filter、reduce、every、someJavaScript陣列Filter
- map/reduce實現 排序排序
- js陣列方法之ReduceJS陣列
- js之reduce的最全用法JS
- Hadoop Map Reduce 漫談Hadoop
- JavaScript的map迴圈、forEach迴圈、filter迴圈、reduce迴圈、reduceRight迴圈JavaScriptFilter
- JS的reduce使用及操作方式JS
- Array.prototype.reduce 實用指南
- 分散式計算與Map Reduce分散式
- reduce()方法的學習和整理
- hadoop之 reduce個數控制Hadoop
- Hadoop原始碼篇--Reduce篇Hadoop原始碼
- Python map, reduce, filter和sortedPythonFilter
- Orzo.js是一個可用Javascript程式設計的Map-Reduce多執行緒實現JSJavaScript程式設計執行緒
- 使用 C-Reduce 進行除錯除錯
- Array高階函式reduce&filter函式Filter
- python內建函式 map/reducePython函式
- 程式碼寫得好,Reduce 方法少不了
- 【web前端】自己實現Array.reduce()Web前端
- Map-Reduce資料分析之二
- map、reduce、filter、for...of、for...in等總結Filter
- reduce與redux中compose函式Redux函式
- Java,Pyhon,Scala比較(一)map,reduceJava
- map/reduce實現資料去重
- mao/reduce實現求平均值
- Python基礎(12):生成器 & reducePython
- 五、GO程式設計模式:MAP-REDUCEGo程式設計設計模式