JS的高阶函数
JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
这就是最简单的高阶函数啦
function high( a, b, f ){ return f(a) + f(b) }
之前遇到一个面试题是用高阶函数写一个jq里的$each方法。
let arr=[1,2,3,4,5]; function fn1(a,b) { return b(a) } function fn2(e) { for(let i=0;i<e.length;i++){ console.log(i,e[i]) } } fn1(arr,fn2)
然后前面我引入的连接里有写一些高阶函数的方法,我们来一一介绍使用一下~
1.map()
由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果。
let arr =[1,2,3,4,5]; arr.map(item =>{ console.log(item) }) //1,2,3,4,5 let arr =[1,2,3,4,5]; const arr2 = arr.map(x =>++x) console.log(arr2) // 2,3,4,5,6
2.filter
filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
let arr =[1,2,3,4,5]; const arr2 = arr.filter(function(x){ return x % 2 !== 0; } ) console.log(arr2) //1,3,5
3.sort
这个是个排序的方法,涉及到各类排序的问题,可以等等等我啥时候想研究了再写一篇文章来研究一下…
var arr = [10, 20, 1, 2]; arr.sort(function (x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0; }); console.log(arr); // [1, 2, 10, 20]
4.every
every()方法可以判断数组的所有元素是否满足测试条件。
5.find
find()方法用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefined
6.findIndex
findIndex()和find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1
7.forEach
forEach()和map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。forEach()常用于遍历数组,因此,传入的函数不需要返回值
posted on 2019-09-12 13:34 JiAyInNnNn123 阅读(173) 评论(0) 编辑 收藏 举报