抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

JavaScript常用高阶函数

常用高阶函数

  1. forEach —— 遍历数组(无返回值)
  2. find —— 查找器,查找符合条件的数据(只找第一个,找到就返回,停止查找)
  3. filter —— 过滤器,筛选数组中符合条件的数据,并以 数组 的方式返回
  4. sort —— 排序器,代替冒泡排序(返回值为排好的 新数组)
  5. map —— 高级遍历(修改数据、提取数据、返回值为修改后的 新数组)
  6. some —— 或判断器(遍历数组,有一条为true,返回值为true,反之则以)
  7. every —— 与判断器(遍历数组,有一条为false,返回值为false,反之则以)
  8. reduce —— 累(加减乘除)器(返回值为累加减乘除后的数)

以上高阶函数都用到循环,参数里边的函数体皆为循环体,所有形参里的函数形参都可以自定义,但推荐使用语义化单词

注意:以下的item,index,arr可选填(不用时可不填)

生单词表:

生词 翻译 生词 翻译
Each 每个、各自 map n.地图(提供信息)
every 每一个 find 找到、找出
filter 过滤器 reduce 减少(累(+-*/%)器)
next 下一个 prev 前一个
item index 索引、下标
Sort 分类、排序 total 全部的、总计

高阶函数-介绍

只要满足其一就为高级函数

  1. 函数的参数是函数
  2. 函数返回值是函数

1.forEach数组遍历(for循环简版)

作用:for循环简版

语法:

1
2
3
4
arr.forEach(function(item,index){ 
//item为每一项,index为下标(前面为变动数据)
item = '大意了' //更改每一项的值
})

注意:无返回值

2.find查找器

作用:查找符合条件的数据(找到第一个就停止查找),返回值为查找到的数据

语法:

1
2
3
4
5
6
var arr = [2,3,5,6]
var a = arr.find(function (item,index,arr){
// item为每一项,index为下标(前面为变动数据);arr为原数组
return item > 3
})
console.log(a) //输出为5

3.fileter过滤器

作用:筛选数组中符合条件的数据,并以 数组 的方式返回

语法:

1
2
3
4
5
6
var arr = [1,2,3,4,5]
var a = arr.fileter(function (item,index,arr){
// item为每一项,index为下标(前面为变动数据);arr为原数组
return item > 2 //筛选条件
})
console.log(a) //输出为[3,4,5]

4.sort排序器

作用:可根据条件进行排序(类似冒泡排序,代替冒泡排序)

语法:

1
2
3
4
5
6
7
var arr = [5,4,1,3,2]
var a = arr.sort(function (next,prev){
//next后一个,prev前一个
return next - prev //后一个减前一个 从小到大排
//prev - next 前一个减后一个 从大到小排
})
console.log(a) //输出 [5,4,3,2,1]

5.map高级遍历

作用:便利数组,可在循环体中修改提取数据,返回值为修改后的 新数组

语法:

1
2
3
4
5
6
7
8
var arr = [1,2,12,24,8,67,51,9,42,7]
var a = arr.map(function (item,index,arr){
// item为每一项,index为下标(前面为变动数据);arr为原数组
if(item < 10){
return item //返回每一项,让map拼接成新数组
}
})
console.log(a) //输出[1,2,null,null,8,null,null,9,null,7]

注意:和forEach的区别是map会返回修改后的新数组,forEach不会

6.some或判断器

作用:判断数组里是否有符合条件的数据,有则返回true

语法: (只要有一个符合条件,整体为true,反之则以)

1
2
3
4
5
6
var arr = [{s:false},{s:false},{s:true},{s:false}]
var a = arr.some(function(item,index,arr){
// item为每一项,index为下标(前面为变动数据);arr为原数组
return item.s = true //判断条件
})
console.log(a) //输出true

相当于||(或)

7.every与判断器

作用:判断数组里的所有数据是否符合条件,全部符合则为true,反正则为false

语法: (判断条件全为true的情况下整体返回 true)

1
2
3
4
5
6
7
var arr = [10,20,30,40,50]
var a = arr.every(function(item,index,arr){
// item为每一项,index为下标(前面为变动数据);arr为原数组
return item % 10 == 0 //判断条件
// 条件不满足后面项不遍历
})
console.log(a) //输出true

相当于&&(与)

8.reduce累(加减乘除、取余)器

作用:累加、累减、累乘、累除、累取余,灵活应用可用于进制转换

语法:

1
2
3
4
5
6
7
8
9
var arr = [1,2,3,4,5,6]
var a = arr.reduce(function(total,item,index,arr){
// total为初始值,用于累加计算结果的返回值(随着循环累计)
// item为每一项,index为下标(前面为变动数据);arr为原数组
// index和arr可选填(用不到时可不填)
return total + item //累加(可自由组计算公式)
},1) //reduce第二个形参为初始数(第一个数),从1开始累加
//reduce第二个形参不写默认为0
console.log(a) //输出21 (运算后的值)

⚠️提示 : 并不仅用于累加累减累成累除项与项之间的计算公式可自定

评论