使用函数处理数组 高阶函数 js
函数式编程
和lisp这种纯粹的函数式编程不一样,js可以实现其为函数式编程
使用函数处理数组
计算一个数组的平均值
// 定义一个用于计算和的函数
var sum = function(x, y){return x + y;};// 初始化将要处理的数据
var data = [23, 34, 324, 34, 45, 123, 56, 23];
var mean = data.reduce(sum) / data.length;
查看一下这个值
mean;
82.75
reduce() 方法为数组的注入
高阶函数
操作函数的函数,接受一个或多个函数作为参数,并返回一个新函数
agrements 所有非箭头函数的局部变量,使用agreements对象在函数中引用函数的参数,对象包含传递给该函数的每个参数的条目,并返回一个数组
function a(){console.log(arguments)};
a(3,24,54,45);
Arguments
0: 3
1: 24
2: 54
3: 45
callee: function a()
length: 4
Symbol(Symbol.iterator): function values()
<prototype>: Object { … }
debugger eval code:1:14
undefined
this指代调用这个函数的对象
下方是关于every方法的使用示例,因为下方要使用every方法(注,这个方法每个函数都具有)
> function a(number, index){return number > index};
undefined
> var b = [-3,-2,-5,-3,234,45,324,56,234];
undefined
> b.every(a);
false
> var b = [234,345,546,234,435,234];
undefined
> b.every(a);
true
>
// 这个高阶函数将会返回一个新的函数
// 这个高阶函数将会对其返回的函数求反
function not(f) { // 传入的函数为freturn function() {var result = f.apply(this, arguments); // 在此处调用函数f(),并将其结果赋值给result this指代其传入的对象,arguments指代传入的参数return !result; // 将调用函数完成后的值取反,并返回}
}
> var even = function(x){return x % 2 === 0 };
undefined
> var odd = not(even);
undefined
> [234,34,234,345,56,234,234,45,234].every(odd);
false
>
大概解释一下,因为这个函数传入的是一个函数,所以先取得这个函数的取反后的函数,然后将取反后的结果赋值一个新的变量,在对这个取反后返回的函数使用every方法,取得遍历。得出结果
not为高阶函数,接收一个函数,并将这个函数进行处理,在进行返回,调用的时候双括号直接调用,或者即可。
ps;关于es6的写法
function (x) {return x + 6;
}
等价于
x => x + 6;
高阶函数;
接收f()和g(),并返回f(g())
function compoes(f, g) {return function() { // 因为是对函数进行处理,所以返回为函数return f.call(this, g.apply(this, arguments));};
}
来运行一下这个函数
计算f1(f2())
var f1 = function(x){ return x*x };
undefined
var f2 = function(x, y){return x + y};
undefined
var f3 = compoes(f1, f2);
undefined
f3(2,3);
25
ok~
耶,灰常完美,完成了高阶函数,对于函数的处理
使用函数处理数组 高阶函数 js相关推荐
- 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数
一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...
- java 高阶函数_谈谈高阶函数给我们带来了什么。
什么是高阶函数 一句话解释的话,就是函数可以作为参数以变量的方式持有,引用,构造和使用 一些文章我随手搜的,大家可以看看,它本身的概念并不复杂. 高阶函数-廖雪峰 高阶函数-wiki 其实现在主流语言 ...
- python阶乘匿名函数_python的高阶函数与匿名函数
一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...
- Kotlin的高阶函数和常用高阶函数
Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...
- python四大高阶函数_四大高阶函数
目录 1. 匿名函数 在我们需要一个函数但又不想费神的去命名一个函数的场合下使用,这就是匿名函数 1 f = lambda x,y,z:x+y+z2 defF(x,y,z):3 return x+y+ ...
- python 把函数作为参数 ---高阶函数
把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数:def add(x, y, f):return f(x) + f(y) 如果传入abs作为参数f的值:add(-5, ...
- Python 基础之匿名函数 迭代器和高阶函数
一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func(): ret ...
- html相乘函数是什么,高阶函数求导公式
复合函数的高阶导数公式比如y=f(x)可以看做y=u(t)和t=v(x)的复合,那么用链式法则 链式法则是微积分中的CSS布局HTML小编今天和大家分享导法则,用以CSS布局HTML小编今天和大家分享 ...
- export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...
高阶函数的定义 在<javascript设计模式和开发实践>中是这样定义的. 函数可以作为参数被传递: 函数可以作为返回值输出. 结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶 ...
最新文章
- Windows锁定计算机C代码编程实现
- python3 上传文件到目标机器_Python3 +服务器搭建私人云盘,再也不怕限速了
- 一步一步写算法(之 算法总结)【转】
- 2015.09.05 C++中类的static与const成员
- 程序清单4.1_talkback.c程序_《C Primer Plus》P60
- tesseract 样例
- [转]知乎大神YaqiLYU关于tracking方向的2013-2016趋势总览!!!强烈推荐!!!
- 3、ORBSLAM闭环检测终局之战之sim3计算流程,确定是否检测到闭环
- 30 行代码实现,支付宝蚂蚁森林自动收能量!
- word2016毕业论文不同章节设置不同页眉方法
- 专业商标设计、logo免费在线设计
- 用phpcms切换中英文网页的方法(不用解析二级域名)、phpcms完成pc和手机端切换(同一域名)...
- 算法系列之1:计算中国农历(一) .
- Postgresql杂谈 16—Postgresql中的锁机制
- SpringMVC返回数据到页面的方法
- Java培训出身,今获阿里Android岗offer,大专学渣的“登天”之路!
- 【参观微软分享有礼】微软拥抱开源
- STM32蜂鸣器模拟播放歌曲--《世间美好与你环环相扣》《生日歌》
- 计算机硬盘管理 3t,3T硬盘的使用方法总结与分享
- 理工男生资源达人的梦想,树莓派低成本创造私人专属互联网的构想及实现