摘要:定義和用法方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值從左到右開始縮減,最終計(jì)算為一個(gè)值。
定義和用法
reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終計(jì)算為一個(gè)值。
reduce() 可以作為一個(gè)高階函數(shù),用于函數(shù)的 compose
reduce() 對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的
瀏覽器支持支持谷歌、火狐、ie9以上等主流瀏覽器
語法array.reduce(function(prev, current, currentIndex, arr), initialValue)
prev:函數(shù)傳進(jìn)來的初始值或上一次回調(diào)的返回值
current:數(shù)組中當(dāng)前處理的元素值
currentIndex:當(dāng)前元素索引
arr:當(dāng)前元素所屬的數(shù)組本身
initialValue:傳給函數(shù)的初始值
初始值為數(shù)值:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const sum = arr.reduce(function (prev, current) { return prev+current }, 0) console.log(sum) //55
reduce根據(jù)函數(shù)傳進(jìn)來的初始值,不斷回調(diào)疊加最終算出數(shù)組的和
初始值為對(duì)象:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const sum = arr.reduce(function (prev, current) { prev.count = prev.count+current return prev }, {count: 0}) console.log(sum) //{count: 55}
如果初始值為對(duì)象的話,返回的也是一個(gè)對(duì)象
初始值為數(shù)組:
const str = "hello" const newstr = str.split("").reduce(function (prev, current) { const obj = {}; obj[current] = current; prev.push(obj) return prev; }, []) console.log(newstr)
結(jié)果為:
[{ h: "h" },{ e: "e" },{ l: "l" },{ l: "l" },{ o: "o" }]
如果初始值為數(shù)組,則返回的也是數(shù)組
reduce應(yīng)用:
{ function func1(a) { return a*10; } function func2(b) { return b*2 } const test1 = func1(2) const test2 = func2(test1) console.log(test2) //40 }
這里我們需要先執(zhí)行方法func1再根據(jù)func1返回的值,然后執(zhí)行方法func2,我們有時(shí)候會(huì)碰到不止兩個(gè)方法一起,如果是多個(gè)呢,這個(gè)時(shí)候就要用到reduce來處理了
function func1(a) { return a*10; } function func2(b) { return b*2 } function func3(c) { return c/2; } const compose = (...func) => (...init) => { if(func.length >= 2){ return func.reduce((prev, curr)=>{ prev = curr(prev) return prev; }, ...init) } return func(...init); } const a1 = compose(func1,func2)(2); console.log(a1) //40 const a2 = compose(func1,func2,func3)(2); console.log(a2) //20
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/101148.html
摘要:基本概念方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值從左到右開始縮減,最終為一個(gè)值。例進(jìn)階應(yīng)用使用方法可以完成多維度的數(shù)據(jù)疊加。在該函數(shù)內(nèi)部,則執(zhí)行多維的疊加工作。參考的內(nèi)建函數(shù)數(shù)組方法的高級(jí)技巧 基本概念 reduce() 方法接收一個(gè)函數(shù)作為累加器(accumulator),數(shù)組中的每個(gè)值(從左到右)開始縮減,最終為一個(gè)值。 reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括...
摘要:函數(shù),是規(guī)范中出現(xiàn)的數(shù)組方法。所有的一切通過一個(gè)函數(shù)來管理流程和傳遞初始參數(shù)。上面就是函數(shù)的實(shí)現(xiàn),它需要對(duì)象作為參數(shù),并返回一個(gè)類型的函數(shù),作為的第一個(gè)參數(shù)。在該函數(shù)內(nèi)部,則執(zhí)行多維的疊加工作。 @(js) reduce函數(shù),是ECMAScript5規(guī)范中出現(xiàn)的數(shù)組方法。在平時(shí)的工作中,相信大家使用的場(chǎng)景并不多,一般而言,可以通過reduce方法實(shí)現(xiàn)的邏輯都可以通過forEach方法來...
摘要:這篇日志,在開始接觸時(shí)候就該寫了,現(xiàn)在發(fā)布也許對(duì)一些剛?cè)氪丝拥耐苄┰S幫助。。。 這篇日志,在開始接觸 webpack 時(shí)候就該寫了,現(xiàn)在發(fā)布也許對(duì)一些剛?cè)氪丝拥耐苄┰S幫助。。。即使有點(diǎn) low,重要的仍是分享 1. reduce 方法介紹 1.1 簡(jiǎn)單場(chǎng)景 reduce 函數(shù)的設(shè)計(jì)意圖就是方便進(jìn)行疊加運(yùn)算: var arr = [0, 1, 2, 3]; // reduce ...
摘要:動(dòng)態(tài)導(dǎo)入使用的是的方法來加載代碼。使用到目前為止,我們已經(jīng)演示了如何動(dòng)態(tài)加載應(yīng)用程序的模塊。還需要公開一個(gè)名稱,在該名稱下我們的模塊狀態(tài)將存在于應(yīng)用程序的中。剩下的唯一部分就是把注冊(cè)到中。 showImg(https://segmentfault.com/img/bVbpGXm?w=800&h=450); 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 代碼分離與...
摘要:循環(huán)還沒有結(jié)束,其中的某個(gè)對(duì)進(jìn)行了添加或者刪除,都會(huì)影響到此次循環(huán)的進(jìn)行,帶來不可預(yù)期的錯(cuò)誤。 首先來一段 redux 結(jié)合 中間件 thunk、logger 的使用demo 了解一下應(yīng)該如何使用 const redux = require(redux) const { createStore, combineReducers, bindActionCreators, ...
閱讀 2379·2021-11-08 13:13
閱讀 1322·2021-10-09 09:41
閱讀 1763·2021-09-02 15:40
閱讀 3254·2021-08-17 10:13
閱讀 2603·2019-08-29 16:33
閱讀 3203·2019-08-29 13:17
閱讀 3188·2019-08-29 11:00
閱讀 3349·2019-08-26 13:40