资讯专栏INFORMATION COLUMN

函数式编程(四)

FingerLiu / 2453人阅读

摘要:命令式代码与声明式代码前面我们介绍了函数式编程中常见的几种函数,下面我们要开始转变观念了。命令式声明式我们看下函数的简单实现。接受个参数这个常见的函数会在我们函数式编程中经常出现的三个函数。一段函数式编程的综合应用

我们接下来介绍函数式语言中3个常见的函数:Map,Filter,Reduce。

命令式代码与声明式代码

前面我们介绍了函数式编程中常见的几种函数,下面我们要开始转变观念了。

命令式代码的意思就是,我们通过编写一条又一条指令去让计算机执行一些动作,这其中一般都会涉及到很多繁杂的细节。 而声明式就要优雅很多了,我们通过写表达式的方式来声明我们想干什么,而不是通过一步一步的指示。

// 命令式
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函数的简单实现。

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个参数
    return acc;
};

这3个常见的函数会在我们函数式编程中经常出现的三个函数。
有一点需要说明的是,for循环是自然语言的处理结果,永远是比map快的。这个就需要你自己在编写代码的时候对利弊进行权衡。

一段函数式编程的综合应用



    
        
        
    
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82882.html

相关文章

  • 前端进击的巨人():略知函数编程

    摘要:自执行函数闭包实现模块化以乐之名程序员产品经理对作用域,以及闭包知识还没掌握的小伙伴,可回阅前端进击的巨人三从作用域走进闭包。参考文档利用闭包实现模块化翻译浅谈中的高阶函数系列更文请关注专栏前端进击的巨人,不断更新中。。。 系列更文前三篇文章,围绕了一个重要的知识点:函数。函数调用栈、函数执行上下文、函数作用域到闭包。可见不理解函数式编程,代码都撸不好。 showImg(https:/...

    omgdog 评论0 收藏0
  • 初见函数编程

    摘要:在学习的过程中时常会听到一个名次函数式编程,那么究竟什么是函数式编程,函数式编程又有什么优点,这就在这篇博客进行一个简单的总结吧主要内容函数式编程的概念函数式编程的优点与示例什么是函数式编程首先,我们放下编程的概念,我们来看函数。 在学习 JS 的过程中时常会听到一个名次——函数式编程,那么究竟什么是函数式编程,函数式编程又有什么优点,这就在这篇博客进行一个简单的总结吧~ 主要内容: 函...

    jerryloveemily 评论0 收藏0
  • JavaScript的语言特性以及重要版本

    摘要:通常一个完成的不仅仅包含了还包括了以及相关版本该版本在中使用。基于原型函数先行的语言使用基于原型的的继承机制,函数是的第一等公民其他相关的语言特性编译型语言把做好的源程序全部编译成二进制代码的可运行程序。 转载请注明出处,创作不易,更多文章请戳 https://github.com/ZhengMaste... 前言:JavaScript诞生于1995年,它是一门脚本语言,起初的目...

    Yangder 评论0 收藏0
  • 《java 8 实战》读书笔记 -第十函数编程的技巧

    摘要:但是,最好使用差异化的类型定义,函数签名如下其实二者说的是同一件事。后者的返回值和初始函数的返回值相同,即。破坏式更新和函数式更新的比较三的延迟计算的设计者们在将引入时采取了比较特殊的方式。四匹配模式语言中暂时并未提供这一特性,略。 一、无处不在的函数 一等函数:能够像普通变量一样使用的函数称为一等函数(first-class function)通过::操作符,你可以创建一个方法引用,...

    nemo 评论0 收藏0
  • 古老的面向对象编程

    摘要:面向对象编程一段完整的创建类的示例如何创建一个类,包含有静态属性方法,公有私有属性方法静态私有变量静态私有方法安全模式,防止未使用操作符私有变量方法公有属性,方法静态公有属性静态共有方法使用关闭包定义静态私有变量与方法,所有实例创建过程中都 面向对象编程 showImg(https://segmentfault.com/img/bVbeqQd?w=2516&h=534); 一段完整的创...

    sutaking 评论0 收藏0

发表评论

0条评论

FingerLiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<