JavaScript高阶函数的使用

高阶函数

高阶函数是将函数作为参数或返回值的函数
下面介绍三个高阶函数

1.1 map/reduce

map

map函数定义在JavaScript的Array中,调用Array的map函数,传入自己的函数,就得到一个新的Array作为结果

let new2Nums = newNums.map(function (n) {
  return n * 2
})

reduce

reduce作用:对数组中所有的内容进行汇总
Array的reduce的一个函数作用在这个Array的[x1,x2,x3…]上,这个函数必须接收两个参数,reduce把结果继续和下一个元素做累计运算

// reduce函数的使用,preValue是之前运算结果,preValue初始化为0
let new3Nums = new2Nums.reduce(function (preValue, n) {
  return preValue + n
}, 0)

1.2 filter

filter的回调函数中:必须返回一个Boolean类型
filter把传入的函数依次作用于每个元素
true:当返回true时,函数内部会自动将这次回调的n加入新数组中
false:当返回false时,函数内部会过滤掉这个n

filter函数的使用:
将所有大于50的数字取出,并存放到新数组中

const arr = ['11', '44', '22', '77', '100']
let newNums = arr.filter(function (n) {
  return n < 50 
})
console.log(newNums);

高阶函数汇总写法

// 汇总写法
let total = arr.filter(function(n){
  return n < 50
}).map(function(){
  return n*2
}).reduce(function(preValue,n) {
  return preValue+n
},0)
console.log(total);

1.3 sort排序方法

因为Array的sort()方法默认把所有元素先转换为String再排序,结果'10'排在了'2'的前面,因为字符'1'比字符'2'的ASCII码小。如果不知道sort()方法的默认排序规则,直接对数字排序,绝对栽进坑里!
幸运的是,sort()方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。
// Array的sort()方法
// const arr = ['11', '44', '22', '77', '100']
arr.sort(function (x, y) {
  if (x > y) {
    return -1;
  }
  if (x < y) {
    return 1
  }
  return 0
})
// sort()方法
let arr1 = ['a','c','b'];
let arr2 = arr1.sort();
console.log(arr1);   // ['a','b','c']
console.log(arr2);   // ['a','b','c']
// arr1和arr2是同一对象,arr1 === arr2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值