成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

函數(shù)式編程(四)

FingerLiu / 2568人閱讀

摘要:命令式代碼與聲明式代碼前面我們介紹了函數(shù)式編程中常見的幾種函數(shù),下面我們要開始轉(zhuǎn)變觀念了。命令式聲明式我們看下函數(shù)的簡單實(shí)現(xiàn)。接受個(gè)參數(shù)這個(gè)常見的函數(shù)會(huì)在我們函數(shù)式編程中經(jīng)常出現(xiàn)的三個(gè)函數(shù)。一段函數(shù)式編程的綜合應(yīng)用

我們接下來介紹函數(shù)式語言中3個(gè)常見的函數(shù):Map,Filter,Reduce。

命令式代碼與聲明式代碼

前面我們介紹了函數(shù)式編程中常見的幾種函數(shù),下面我們要開始轉(zhuǎn)變觀念了。

命令式代碼的意思就是,我們通過編寫一條又一條指令去讓計(jì)算機(jī)執(zhí)行一些動(dòng)作,這其中一般都會(huì)涉及到很多繁雜的細(xì)節(jié)。 而聲明式就要優(yōu)雅很多了,我們通過寫表達(dá)式的方式來聲明我們想干什么,而不是通過一步一步的指示。

// 命令式
const makes = [];
for (i = 0; i < cars.length; i++) {
  makes.push(cars[i].make);
}

// 聲明式
var makes = cars.map(function(car){ return car.make; });

我們看下es5 Map,Filter,Reduce函數(shù)的簡單實(shí)現(xiàn)。

Array.prototype.map = function(f) {
    const newArray = [];
    const O = Object(this);
    for (let i = 0; i < O.length; i++) {
        newArray[i] = f(O[i]);
    }
    return newArray;
}


Array.prototype.filter = function(pred) {
    const newArray = [];
    for (var i = 0; i < this.length; ++i) {
        if (pred(this[i]))
            newArray[newArray.length] = this[i];
    }
    return newArray;
}

Array.prototype.reduce = function(f, start) {
    var acc = start;
    for (var i = 0; i < this.length; ++i)
        acc = f(this[i], acc); // f() 接受2個(gè)參數(shù)
    return acc;
};

這3個(gè)常見的函數(shù)會(huì)在我們函數(shù)式編程中經(jīng)常出現(xiàn)的三個(gè)函數(shù)。
有一點(diǎn)需要說明的是,for循環(huán)是自然語言的處理結(jié)果,永遠(yuǎn)是比map快的。這個(gè)就需要你自己在編寫代碼的時(shí)候?qū)走M(jìn)行權(quán)衡。

一段函數(shù)式編程的綜合應(yīng)用



    
        
        
    
    

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82882.html

相關(guān)文章

  • 前端進(jìn)擊的巨人():略知函數(shù)編程

    摘要:自執(zhí)行函數(shù)閉包實(shí)現(xiàn)模塊化以樂之名程序員產(chǎn)品經(jīng)理對(duì)作用域,以及閉包知識(shí)還沒掌握的小伙伴,可回閱前端進(jìn)擊的巨人三從作用域走進(jìn)閉包。參考文檔利用閉包實(shí)現(xiàn)模塊化翻譯淺談中的高階函數(shù)系列更文請(qǐng)關(guān)注專欄前端進(jìn)擊的巨人,不斷更新中。。。 系列更文前三篇文章,圍繞了一個(gè)重要的知識(shí)點(diǎn):函數(shù)。函數(shù)調(diào)用棧、函數(shù)執(zhí)行上下文、函數(shù)作用域到閉包??梢姴焕斫夂瘮?shù)式編程,代碼都擼不好。 showImg(https:/...

    omgdog 評(píng)論0 收藏0
  • 初見函數(shù)編程

    摘要:在學(xué)習(xí)的過程中時(shí)常會(huì)聽到一個(gè)名次函數(shù)式編程,那么究竟什么是函數(shù)式編程,函數(shù)式編程又有什么優(yōu)點(diǎn),這就在這篇博客進(jìn)行一個(gè)簡單的總結(jié)吧主要內(nèi)容函數(shù)式編程的概念函數(shù)式編程的優(yōu)點(diǎn)與示例什么是函數(shù)式編程首先,我們放下編程的概念,我們來看函數(shù)。 在學(xué)習(xí) JS 的過程中時(shí)常會(huì)聽到一個(gè)名次——函數(shù)式編程,那么究竟什么是函數(shù)式編程,函數(shù)式編程又有什么優(yōu)點(diǎn),這就在這篇博客進(jìn)行一個(gè)簡單的總結(jié)吧~ 主要內(nèi)容: 函...

    jerryloveemily 評(píng)論0 收藏0
  • JavaScript的語言特性以及重要版本

    摘要:通常一個(gè)完成的不僅僅包含了還包括了以及相關(guān)版本該版本在中使用?;谠秃瘮?shù)先行的語言使用基于原型的的繼承機(jī)制,函數(shù)是的第一等公民其他相關(guān)的語言特性編譯型語言把做好的源程序全部編譯成二進(jìn)制代碼的可運(yùn)行程序。 轉(zhuǎn)載請(qǐng)注明出處,創(chuàng)作不易,更多文章請(qǐng)戳 https://github.com/ZhengMaste... 前言:JavaScript誕生于1995年,它是一門腳本語言,起初的目...

    Yangder 評(píng)論0 收藏0
  • 《java 8 實(shí)戰(zhàn)》讀書筆記 -第十函數(shù)編程的技巧

    摘要:但是,最好使用差異化的類型定義,函數(shù)簽名如下其實(shí)二者說的是同一件事。后者的返回值和初始函數(shù)的返回值相同,即。破壞式更新和函數(shù)式更新的比較三的延遲計(jì)算的設(shè)計(jì)者們?cè)趯⒁霑r(shí)采取了比較特殊的方式。四匹配模式語言中暫時(shí)并未提供這一特性,略。 一、無處不在的函數(shù) 一等函數(shù):能夠像普通變量一樣使用的函數(shù)稱為一等函數(shù)(first-class function)通過::操作符,你可以創(chuàng)建一個(gè)方法引用,...

    nemo 評(píng)論0 收藏0
  • 古老的面向?qū)ο?em>編程

    摘要:面向?qū)ο缶幊桃欢瓮暾膭?chuàng)建類的示例如何創(chuàng)建一個(gè)類,包含有靜態(tài)屬性方法,公有私有屬性方法靜態(tài)私有變量靜態(tài)私有方法安全模式,防止未使用操作符私有變量方法公有屬性,方法靜態(tài)公有屬性靜態(tài)共有方法使用關(guān)閉包定義靜態(tài)私有變量與方法,所有實(shí)例創(chuàng)建過程中都 面向?qū)ο缶幊?showImg(https://segmentfault.com/img/bVbeqQd?w=2516&h=534); 一段完整的創(chuàng)...

    sutaking 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<