javascript(函数式编程思考) ---> Map-Filter

let add = x=>x+1;
//Map :: (a -> b) -> [a] -> [b]
let Map = (function(result,f,arr){
    //闭包存储累积对象
    let result = [];
    return function map(f,arr){
            if(!Array.isArray(arr)){
                return "要处理的对象为数组";
            }
            if(arr.length ==0){
                return [];
            }else{
                let [head,...tail] = arr;
                result.push(f(head));
                // 通过回调map遍历目标对象arr,f处理过的元素存入result,tail为[]即遍历结束,可以返回result
                return tail.length == 0 ? result : map(f,tail);
            }
    }
})();
let test = Map(add,[1,2,3]);
console.log(test);//[2,3,4]
let biggerTen = x => x>10;
//Filter :: (a -> Bool) -> [a] -> [a]
let Filter = (function(){
    let result=[];
    return function filter(f,arr){
            if(!Array.isArray(arr)){
                return "要处理的对象为数组";
            }
            if(arr.length == 0){
                return [];
            }else{
                let [head,...tail] = arr;
                f(head) && result.push(head);
                return tail.length == 0 ? result : filter(f,tail);
            }
    };
})();

let testFilter = Filter(biggerTen,[1,5,10,44,12,2,5]);
console.log(testFilter);//[44,12]

  

时间: 2024-11-12 13:08:19

javascript(函数式编程思考) ---> Map-Filter的相关文章

Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") return test1 res = test() print(res) 输出结果 test <function test1 at 0x021F5C90> 分析:这里print(res)输出的是te

JavaScript函数式编程(三)

JavaScript函数式编程(一) JavaScript函数式编程(二) 在第二篇文章里,我们介绍了 Maybe.Either.IO 等几种常见的 Functor,或许很多看完第二篇文章的人都会有疑惑: 『这些东西有什么卵用?』 事实上,如果只是为了学习编写函数式.副作用小的代码的话,看完第一篇文章就足够了.第二篇文章和这里的第三篇着重于的是一些函数式理论的实践,是的,这些很难(但并非不可能)应用到实际的生产中,因为很多轮子都已经造好了并且很好用了.比如现在在前端大规模使用的 Promise

函数式编程工具:filter和reduce

# -*- coding: utf-8 -*- #python 27 #xiaodeng #函数式编程工具:filter和reduce #python内置函数中,map函数是用来进行函数式编程这类工具最简单的内置函数代数 #函数式编程含义: #一种编程范式,也就是如何编写程序的方法论,是一种编程思想. #无法给予准确的定义 #函数式编程的编程风格强调表达式计算,而不是执行命令. #常见函数式编程 #filter:基于某一测试函数过滤出一些元素 #reduce:对每对元素都应用函数并运行到最后结果

javaScript函数式编程

第1章 JavaScript函数式编程简介 11.1 JavaScript案例 11.2 开始函数式编程 41.2.1 为什么函数式编程很重要 41.2.2 以函数为抽象单元 71.2.3 封装和隐藏 91.2.4 以函数为行为单位 101.2.5 数据抽象 141.2.6 函数式JavaScript初试 171.2.7 加速 191.3 Underscore示例 221.4 总结 23第2章 一等函数与Applicative编程 242.1 函数是一等公民 242.2 Applicative编

JavaScript函数式编程(1):基本思想

1 函数式编程简介 函数式编程是和传统命令式编程区分的一种编程思想,"在函数式编程语言中,函数是第一类的对象,也就是说,函数 不依赖于任何其他的对象而可以独立存在,而在面向对象的语言中,函数 ( 方法 ) 是依附于对象的,属于对象的一部分.这一点决定了函数在函数式语言中的一些特别的性质,比如作为传出 / 传入参数,作为一个普通的变量等.[1]" 函数式编程思想的源头可以追溯到 20 世纪 30 年代,数学家阿隆左 . 丘奇在进行一项关于问题的可计算性的研究,也就是后来的 lambda

20170917 前端开发周报:JavaScript函数式编程、作用域和闭包

1.用函数式编程对JavaScript进行断舍离 当从业20的JavaScript老司机学会函数式编程时,他扔掉了90%的特性,也不用面向对象了,最后发现了真爱啊!!! https://juejin.im/entry/59b86... 2.JavaScript作用域和闭包 作用域和闭包在JavaScript里非常重要.但是在我最初学习JavaScript的时候,却很难理解.这篇文章会用一些例子帮你理解它们.我们先从作用域开始.作用域 JavaScript的作用域限定了你可以访问哪些变量.有两种作

王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()

转载请注明出处:王亟亟的大牛之路 首先在这里祝愿大家,新年快乐,工作顺利,BUG少少!!! 本来说是在春节假期内继续维持着写文章的进度,但是还是偷懒了几天(打了4天SC2哈哈哈) 今天上的是关于Python的文章,毕竟在亲戚家拜年,懒得插各类手机调试什么的,况且确实好久没有弄Python了,就写了,废话不多,开始正题!! 函数式编程 函数是什么? 把复杂的操作化为简单的函数分解成简单的操作,这种操作就是面向过程,也就是C这类的实现的大体概念. 函数式是什么? 函数没有变量,任意一个函数,只要输入

在JavaScript函数式编程里使用Map和Reduce方法

所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工具方法我们现在可以使用了.在这些函数方法里主要的是基于JavaScript 数组对象的map()方法和reduce()方法. 如果你如今还没有使用map()和reduce()方法,那么现在是时候开始使用了.如今绝大部分的JavaScript开发平台都与生俱来的支持ECMAScript5.使用Map方

python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r

一.作用域 作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变 二.匿名函数 lambda:正常和其他函数进行配合使用.正常无需把匿名函数赋值给一个变量. f=lambda x:x*x print(f) #打印指向该函数的内存地址 print(f(5)) #内存地址(5) 调用运行该函数 def cala(x): y=x*x return y z=cala(5) print(z) >>> <function <lambda> at 0x10137d950&g