新聞中心
高階函數(shù),英文叫 Higher Order function。一個(gè)函數(shù)可以接收另外一個(gè)函數(shù)作為參數(shù),這種函數(shù)就叫做高階函數(shù)。

讓客戶(hù)滿意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、雅安服務(wù)器托管、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、蘭坪網(wǎng)站維護(hù)、網(wǎng)站推廣。
示例:
- function add(x, y, f) {
- return f(x) + f(y);
- }
- //用代碼驗(yàn)證一下:
- add(-5, 6, Math.abs); // 11
一、常見(jiàn)的高階函數(shù)
ES6中數(shù)組新增了幾種方法,其中 map、reduce、filter 幾個(gè)都是高階函數(shù),除此,普通的sort也是高階函數(shù)。分別介紹下新增的三個(gè)方法。
1.1、filter
filter 是過(guò)濾數(shù)組,返回滿足條件的數(shù)據(jù),組成一個(gè)新的數(shù)組返回,不滿足條件的被丟棄。
實(shí)例1:取出數(shù)組中小于 100 的數(shù)據(jù),放到一個(gè)新數(shù)組中
- let grad = [ 102, 188, 55, 66, 200, 800 ]
- let arr2 = grad.filter( function(item){
- return item <= 100
- })
- console.log("arr2",arr2)// 55, 66
上述實(shí)例中,filter傳入的參數(shù)是一個(gè)函數(shù),傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是 true 或 false 決定保留還是丟棄元素。因?yàn)橹挥?55 66 兩個(gè)滿足條件,所以新的數(shù)組中只有這兩個(gè)元素。
1.2、map
map 是映射的意思。
原數(shù)組被映射成一個(gè)新的數(shù)組,返回值是一個(gè)新數(shù)組,不改變?cè)瓉?lái)的數(shù)組。新的數(shù)組與原數(shù)組的長(zhǎng)度是不會(huì)改變的。
實(shí)例2:給數(shù)據(jù)每個(gè)元素放大 2 倍。
- let arr2 = [ 55, 66 ]
- let arr3 = arr2.map( item => {
- return item*2
- })
- //返回結(jié)果 [ 110, 132 ]
上述實(shí)例,map接收的參數(shù)是一個(gè)函數(shù),該函數(shù)依次作用于每個(gè)元素,對(duì)元素放大了2倍,也可以對(duì)其進(jìn)行任意的復(fù)雜操作。
1.3、reduce
reduce 是對(duì)數(shù)組進(jìn)行匯總的,往往進(jìn)去一個(gè)數(shù)組,出來(lái)是一個(gè)數(shù)據(jù)。經(jīng)常用于求和和計(jì)算平均值。
實(shí)例3:對(duì)上個(gè)實(shí)例返回的結(jié)果進(jìn)行求和。
- let sum = arr3.reduce((tmp,item)=>{
- return tmp+item
- })
- //返回結(jié)果 242
重點(diǎn)來(lái)了,如果我們想把上邊三個(gè)實(shí)例合并到一起執(zhí)行,最終我們可以寫(xiě)得有多簡(jiǎn)單呢?
- // 復(fù)雜寫(xiě)法
- let grad = [102,188,55,66,200,800]
- let arr2 = grad.filter(function(item){
- return item <= 100
- })
- let arr3 = arr2.map(item=>{
- return item*2
- })
- let sum = arr3.reduce((tmp,item)=>{
- return tmp+item
- })
- //簡(jiǎn)單寫(xiě)法
- let sum2 = grad
- .filter( item => {return item <= 100})
- .map(item=>{return item*2})
- .reduce((tmp,item)=>{return tmp+item})
新聞名稱(chēng):聊聊Javascript常見(jiàn)的高階函數(shù)
本文來(lái)源:http://fisionsoft.com.cn/article/dhojcgh.html
其他資訊
- 港版ip怎么創(chuàng)建?香港服務(wù)器怎么實(shí)現(xiàn)百度推廣
- 長(zhǎng)沙網(wǎng)站制作價(jià)格多少錢(qián),長(zhǎng)沙市網(wǎng)站制作的報(bào)價(jià)
- windows棧增長(zhǎng)方向?(棧增長(zhǎng)方向)
- 數(shù)據(jù)庫(kù)的分類(lèi)與區(qū)分:了解不同類(lèi)型的數(shù)據(jù)庫(kù)(不同類(lèi)型的數(shù)據(jù)庫(kù))
- 數(shù)據(jù)庫(kù)國(guó)際化:實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容多語(yǔ)言化(動(dòng)態(tài)內(nèi)容用數(shù)據(jù)庫(kù)國(guó)際化)


咨詢(xún)
建站咨詢(xún)
