JavaScript reduceRight()
reduceRight方法與reduce方法的用法幾乎一模一樣。
唯一的區別是reduceRight方法按照陣列索引降序方式累計。
下面結合程式碼例項對它進行一下詳細分析。
更多內容可以參閱JavaScript Array 陣列一章節。
ES5新增此方法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼array.reduceRight(callbackfn[, initial])
引數解析:
(1).callbackfn(previousValue, currentValue, currentIndex, array):
必需,回撥函式,以索引降序方式對陣列每一個元素執行一次此回撥函式。
具有四個引數:
(1).前一次回撥函式的返回值。
(2).當前陣列元素的值。
(3).當前陣列元素的索引。
(4).當前陣列物件。
(2).initial:可選,如果指定此引數,將用作初始積累值。
特別說明:回撥函式第一次呼叫時,是否為 reduceRight() 提供 initial 引數有重要影響。
提供 initial 引數:
(1).previousValue 引數值 為initial 值。
(2).currentValue 引數值是陣列中的最後一個元素值。
未提供 initial 引數:
(1).previousValue 引數值是陣列中的最後一個元素值。
(2).currentValue 引數值是陣列中的倒數第二個元素值。
reduceRight() 方法返回值是回撥函式最後一次執行返回的累積結果。
瀏覽器相容:
(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.reduceRight(appendCurrent); console.log(num); console.log(result);
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).沒有為reduceRight方法提供第二個引數。
(2).那麼初次呼叫回撥函式時,previousValue引數值就是陣列倒數第一個元素值,currentValue是倒數第二個元素值。
(3).初次呼叫,函式內部實現陣列倒數第一個元素和倒數第二個元素拼接效果,生成"青島市南區:3"。
(4).第二個呼叫回撥函式,previousValue引數值是上一次回撥函式的返回值"青島市南區:3",第二個引數值是陣列倒數第三個元素值。
(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.reduceRight(addRounded,0); console.log(num); console.log(result);
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).對reduceRight方法提供了兩個引數。
(2).第二個引數initial規定累積起始值。
(3).reduceRight方法規定引數initial,回撥函式第一個引數值就是initial,回撥函式第二個引數值就是陣列倒數第一個元素值。
(4).回撥函式第一次執行完畢,它的返回值作為回撥函式第二次執行的第一個引數值,第二個引數是陣列的倒數第二個元素值,以此類推。
(5).最後reduce方法的返回值就是回撥函式最後一次執行的返回值。
相關文章
- 演算法思維體操:用JavaScript和Python自己實現reduceRight和map(連結串列)演算法JavaScriptPython
- 陣列的forEach,map,filter,reduce,reduceRight,every,some方法陣列Filter
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[06]-javaScript和thisJavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- JavaScriptJavaScript
- JavaScript -"this"JavaScript
- javascript ??JavaScript
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] ++operationJavaScript
- JavaScript用法JavaScript
- JavaScript 物件JavaScript物件
- [Javascript] isAsyncFunctionJavaScriptFunction
- [Javascript] isPromiseLikeJavaScriptPromise
- [Javascript] yield*JavaScript
- Promise in JavascriptPromiseJavaScript
- Javascript HookJavaScriptHook
- JavaScript LetJavaScript
- JavaScript ConstJavaScript
- JavaScript insertAdjacentHTML()JavaScriptHTML
- JavaScript matches()JavaScript
- JavaScript contains()JavaScriptAI
- JavaScript getFullYear()JavaScript
- JavaScript setFullYear()JavaScript
- JavaScript setTime()JavaScript
- JavaScript setSeconds()JavaScript
- JavaScript setMinutes()JavaScript
- JavaScript getDate()JavaScript
- JavaScript setHours()JavaScript
- JavaScript setDate()JavaScript
- JavaScript toUTCString()JavaScript
- JavaScript toGMTString()JavaScript