这是一系列关于函数式编程的文章,主要记录我在函数式编程学习方面的心得体会,部分参考于部分书籍或者文章,纯粹个人学习,不做任何商业用途,如有冒犯请及时指正。

es6 every函数

every函数我们在日常开发中可能不太常用到,他的用法也很简单:

array.every(function(currentValue,index,arr), thisValue)

参数说明:

参数 说明
function(currentValue,index,arr) 必须,函数,数组中的每个元素都会执行这个函数
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined”

实例:

请求数组是否全是偶数
let arr = [1,2,3,4]
function checkEventNumber(num){
return num%2==0
}
arr.every(checkEventNumber)  //false
let arr2 = [2,4,6,8]
arr2.every(checkEventNumber) //true

下面我们自己用函数式编程的思想写一个every函数。

const every = (arr,fn)=>{let result = true  //初始化数组全部为偶数for(let i= 0;i<arr.length;i++) //循环数组result = result && fn(arr[i]) //修改result的值return result
}

现在我们已经按照我们的需求(判断数组是否全是偶数)创建好我们的函数,函数运行不依赖外部环境而且满足应用透明性,对所有的相同输入都返回相同的值,也是一个纯函数,符合我们函数式变成的思想。
接下来我们运行这个函数

function checkEventNumber(number){
return number%2==0
}
every([2,3,4],checkEventNumber) //false
every([2,4,6],checkEventNumber) //true

很好,代码运行符合我们的预期,这就是一个简单运用函数式编程实现的函数。函数式编程的好处很多,如果你能在自己的开发实践中不断地尝试使用函数式编程,你将会体验到现在网络上非常流行的词:真香!

下一篇文章继续使用函数式编程写一些我们日常使用的高阶函数。

函数式编程之every函数相关推荐

  1. 函数式编程之-bind函数

    Bind函数 Bind函数在函数式编程中是如此重要,以至于函数式编程语言会为bind函数设计语法糖.另一个角度Bind函数非常难以理解,几乎很少有人能通过简单的描述说明白bind函数的由来及原理. 这 ...

  2. return编程python_python3 第二十一章 - 函数式编程之return函数和闭包

    我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax=0for n inargs: ax= ax +nreturn ax 但是,如果不需要 ...

  3. java8函数式编程之Stream流处理的方法和案例讲解

    函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算. 为什么Java需要Lambda表达式 ...

  4. linux编程之pthread_create函数

    linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...

  5. socket编程之 accept函数的理解

    在进入我们的正题之前,再来复习一波编写服务器的函数流程吧 服务器端:socket()-->bind( )-->listen()-->accept()-->read()/writ ...

  6. linux读取文件修改时间函数,Linux服务器编程之utime()函数修改文件存取时间

    Linux服务器编程之utime()函数修改文件存取时间 C语言utime()函数:修改文件的存取时间和更改时间 头文件: #include #include 定义函数: int utime(cons ...

  7. 函数式编程之pipeline——很酷有没有

    Pipeline pipeline 管道借鉴于Unix Shell的管道操作--把若干个命令串起来,前面命令的输出成为后面命令的输入,如此完成一个流式计算.(注:管道绝对是一个伟大的发明,他的设哲学就 ...

  8. python函数式编程之functools、itertools、operator详解

    文章目录 写在篇前 itertools 无穷迭代器 最短停止迭代器 排列组合迭代器 operator 基本运算符函数 属性查询 functools partial & partialmetho ...

  9. 详解Python函数式编程之map、reduce、filter

    map().reduce().filter()是Python中很常用的几个函数,也是Python支持函数式编程的重要体现.不过,在Python 3.x中,reduce()不是内置函数,而是放到了标准库 ...

最新文章

  1. fpga经典设计100例_“100例”—优秀产品设计曲线细节美图
  2. java类结构图_java 集合类结构图
  3. 洛谷 - P2762 太空飞行计划问题(最大权闭合图+路径打印)
  4. 编辑器之神VIM入门
  5. spotify音乐下载_使用Python和R对音乐进行聚类以在Spotify上创建播放列表。
  6. RPC 远程过程调用协议
  7. 图像处理相关知识(不断更新)
  8. 地图图表、柱状图、条形图、折线图、中国地图、世界地图、省市地图、仪表盘、雷达图、饼图、散点图、气泡图、瀑布图、堆叠图、热力图、桑基图、关系图、漏斗图、Axure原型、rp原型、产品原型
  9. android layout_gravity失效的问题
  10. 谈谈Runtime类中的freeMemory,totalMemory,maxMemory
  11. 无法创建java虚拟机_java虚拟机创建失败的原因整理
  12. ios视频播放器-1
  13. [BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
  14. Matlab中xlsread 函数读取excel表格数据或者字符串
  15. 计算机小型机是机箱么,广州励康科技
  16. 看图四级作文 快速技术的发展计算机,【英语四级看图作文范文11篇】_英语四级看图作文范文大全_2021年英语四级看图作文范文_东城教研...
  17. [渝粤教育] 山东大学 生物信息学 参考 资料
  18. samba更改其他端口,如何与windows共享文件夹
  19. linux查询文件大小
  20. 关于给手机拍照出现斜条纹的问题

热门文章

  1. 开源的B2B网站 及 B2B、B2C、C2C的讲解
  2. LM个人发卡网系统开源源码「免授权」
  3. Ubuntu18.04解决蓝牙耳机无法连接问题
  4. windows 推荐的ftp服务器软件Wing FTP Server
  5. .NetCore后台使用QrCode.Net根据网络链接生成二维码
  6. Android10.0 os定制化系列讲解导读
  7. 趣图:菜鸟程序员的工作状态…
  8. Spring Boot教程(二十五)返回JSON格式
  9. 2021上半年全国计算机二级报名江苏,江苏2021年3月全国计算机等级考试报名公告...
  10. 原生js获取html元素属性,JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)...