JavaScript reduce()
reduce方法具有累積計算的功能,規則單純通過理論方式難以清晰描述。
後面會通過程式碼例項對其進行一下詳細分析。
更多內容可以參閱JavaScript Array 陣列一章節。
ES5新增此方法。
語法結構:
[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).safria瀏覽器支援此方法。
程式碼例項:
[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 map和reduce的區別JavaScript
- javascript高階函式---filter---map---reduceJavaScript函式Filter
- JavaScript(1)高階函式filter、map、reduceJavaScript函式Filter
- Javascript中陣列方法reduce的妙用之處JavaScript陣列
- JavaScript 4/30: 陣列的 map, filter 和 reduce 用法JavaScript陣列Filter
- JavaScript系列--JavaScript陣列高階函式reduce()方法詳解及奇淫技巧JavaScript陣列函式
- reduce的妙用
- JS中reduce方法JS
- 陣列reduce()方法陣列
- Array的reduce方法
- reduce() 多種用法
- Hadoop Map Reduce 漫談Hadoop
- forEach、map、reduce比較
- tf.reduce_sum用法
- js之reduce的最全用法JS
- array_reduce 多值化一
- js陣列方法之ReduceJS陣列
- Array.reduce()方法的使用
- python內建函式 map/reducePython函式
- Array.prototype.reduce 實用指南
- JS的reduce使用及操作方式JS
- reduce()方法的學習和整理
- 分散式計算與Map Reduce分散式
- Python基礎(12):生成器 & reducePython
- 使用 C-Reduce 進行除錯除錯
- Map-Reduce資料分析之二
- map、reduce、filter、for...of、for...in等總結Filter
- Array高階函式reduce&filter函式Filter
- 【web前端】自己實現Array.reduce()Web前端
- 程式碼寫得好,Reduce 方法少不了
- Python學習筆記 - filter,map,reduce,zipPython筆記Filter
- Array.prototype.reduce 的理解與實現
- Spark入門(五)--Spark的reduce和reduceByKeySpark
- python之高階函式map,reduce,filter用法Python函式Filter
- python-python的sao操作 map reduce filterPythonFilter
- 陣列的 map, filter ,sort和 reduce 用法陣列Filter
- 一文搞懂 Java8 reduce操作Java