函数式编程之every函数
这是一系列关于函数式编程的文章,主要记录我在函数式编程学习方面的心得体会,部分参考于部分书籍或者文章,纯粹个人学习,不做任何商业用途,如有冒犯请及时指正。
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函数相关推荐
- 函数式编程之-bind函数
Bind函数 Bind函数在函数式编程中是如此重要,以至于函数式编程语言会为bind函数设计语法糖.另一个角度Bind函数非常难以理解,几乎很少有人能通过简单的描述说明白bind函数的由来及原理. 这 ...
- return编程python_python3 第二十一章 - 函数式编程之return函数和闭包
我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax=0for n inargs: ax= ax +nreturn ax 但是,如果不需要 ...
- java8函数式编程之Stream流处理的方法和案例讲解
函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算. 为什么Java需要Lambda表达式 ...
- linux编程之pthread_create函数
linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...
- socket编程之 accept函数的理解
在进入我们的正题之前,再来复习一波编写服务器的函数流程吧 服务器端:socket()-->bind( )-->listen()-->accept()-->read()/writ ...
- linux读取文件修改时间函数,Linux服务器编程之utime()函数修改文件存取时间
Linux服务器编程之utime()函数修改文件存取时间 C语言utime()函数:修改文件的存取时间和更改时间 头文件: #include #include 定义函数: int utime(cons ...
- 函数式编程之pipeline——很酷有没有
Pipeline pipeline 管道借鉴于Unix Shell的管道操作--把若干个命令串起来,前面命令的输出成为后面命令的输入,如此完成一个流式计算.(注:管道绝对是一个伟大的发明,他的设哲学就 ...
- python函数式编程之functools、itertools、operator详解
文章目录 写在篇前 itertools 无穷迭代器 最短停止迭代器 排列组合迭代器 operator 基本运算符函数 属性查询 functools partial & partialmetho ...
- 详解Python函数式编程之map、reduce、filter
map().reduce().filter()是Python中很常用的几个函数,也是Python支持函数式编程的重要体现.不过,在Python 3.x中,reduce()不是内置函数,而是放到了标准库 ...
最新文章
- fpga经典设计100例_“100例”—优秀产品设计曲线细节美图
- java类结构图_java 集合类结构图
- 洛谷 - P2762 太空飞行计划问题(最大权闭合图+路径打印)
- 编辑器之神VIM入门
- spotify音乐下载_使用Python和R对音乐进行聚类以在Spotify上创建播放列表。
- RPC 远程过程调用协议
- 图像处理相关知识(不断更新)
- 地图图表、柱状图、条形图、折线图、中国地图、世界地图、省市地图、仪表盘、雷达图、饼图、散点图、气泡图、瀑布图、堆叠图、热力图、桑基图、关系图、漏斗图、Axure原型、rp原型、产品原型
- android layout_gravity失效的问题
- 谈谈Runtime类中的freeMemory,totalMemory,maxMemory
- 无法创建java虚拟机_java虚拟机创建失败的原因整理
- ios视频播放器-1
- [BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
- Matlab中xlsread 函数读取excel表格数据或者字符串
- 计算机小型机是机箱么,广州励康科技
- 看图四级作文 快速技术的发展计算机,【英语四级看图作文范文11篇】_英语四级看图作文范文大全_2021年英语四级看图作文范文_东城教研...
- [渝粤教育] 山东大学 生物信息学 参考 资料
- samba更改其他端口,如何与windows共享文件夹
- linux查询文件大小
- 关于给手机拍照出现斜条纹的问题
热门文章
- 开源的B2B网站 及 B2B、B2C、C2C的讲解
- LM个人发卡网系统开源源码「免授权」
- Ubuntu18.04解决蓝牙耳机无法连接问题
- windows 推荐的ftp服务器软件Wing FTP Server
- .NetCore后台使用QrCode.Net根据网络链接生成二维码
- Android10.0 os定制化系列讲解导读
- 趣图:菜鸟程序员的工作状态…
- Spring Boot教程(二十五)返回JSON格式
- 2021上半年全国计算机二级报名江苏,江苏2021年3月全国计算机等级考试报名公告...
- 原生js获取html元素属性,JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)...