函数式编程 --- 高阶函数

含义:
高阶函数全称 (Higher-order function)
1、可以把函数作为参数传递给另一个函数
2、可以把函数作为另一个函数的返回结果

意义:高阶函数是用来抽象通用的问题:抽象可以帮我们屏蔽细节,只需要关注与我们的目标。

常用的高阶函数

1. forEach

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

2. map

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。

function pow(x) {
    return x * x;
    }
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    // 结果 [1, 4, 9, 16, 25, 36, 49, 64, 81]
    var result = arr.map(pow)

3. filter

filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

4. every

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true。

注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。

function checkAdult(age) {
    return age >= 18;
}
var ages = [32, 33, 16, 40];
// 结果 false
var result = ages.every(checkAdult);

5. some

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。
    注意: some() 不会对空数组进行检测。
    注意: some() 不会改变原始数组。
function checkAdult(age) {
    return age >= 18;
}
var ages = [3, 10, 18, 20];
// 结果 true
var result = ages.some(checkAdult);

6. find/findIndex

find:遍历数组中元素,找到第一个满足条件得元素。
findindex:同find,返回第几个元素。

7. reduce

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

8. sort

sort() 方法用于对数组的元素进行排序:默认把所有元素先转换为String再排序。注意是转换为ASCI码后再作比较
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。

注意:当数字是按字母顺序排列时"40"将排在"5"前面。
使用数字排序,你必须通过一个函数作为参数来调用。
函数指定数字是按照升序还是降序排列。
这些说起来可能很难理解,你可以通过本页底部实例进一步了解它。

注意: 这种方法会改变原始数组!。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
// fruits 输出结果:Apple,Banana,Mango,Orange
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值