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()常用于遍历数组,因此,传入的函数不需要返回值

原文地址:https://www.cnblogs.com/JiAyInNnNn/p/11511424.html