JavaScript中的高阶函数应用

JS中,函数时一种特殊的对象,用typeof来判断的话是一个function的对象,可以将函数付给一个变量,这个变量也可以传递给别的变量,最后这个函数还可以作为参数传递给别的函数,甚至还可以作为别的函数的返回值。

高阶函数

对其他函数进行操作的函数(参数是函数或者返回值是函数)

典型示例:JS中原生自带的:Array.prototype.map,Array.prototype.filter,Array.prototype.reduce等

内置高阶函数的简单使用:

1、map()

首先,map()的返回值是一个数组,操作的也是一个数组,但是他的参数是一个函数。

如操作每一个数组元素*2:

let arr1 = [1,2,3];
let arr2 = arr1.map(item => item * 2);
//arr2 = [2,4,6];

2、filter()

filter() 方法会创建一个新数组,其中包含所有通过回调函数测试的元素。 传递给 filter() 方法的回调函数接受3个参数:element,index 和 array。

let persons = [{name:'zhangsan',sex:'men'},{name:'lishi',sex:'men'},{name:'limei',sex:'women'}];
let womens = persons.filter(person => person.sex == 'women');
//womens = [{name:'limei',sex:'women'}];

3、deduce()

reduce 方法对调用数组的每个元素执行回调函数,最后生成一个单一的值并返回。 reduce 方法接受两个参数:1)reducer 函数(回调),2)一个可选的 initialValue。

reducer 函数(回调)接受四个参数:accumulator,currentValue,currentIndex,sourceArray。

如果提供了 initialValue,则累加器将等于 initialValue,currentValue 将等于数组中的第一个元素。

如果没有提供 initialValue,则累加器将等于数组中的第一个元素,currentValue 将等于数组中的第二个元素。

A

var arr= [1,2,3,4,56,6];
var sum = arr.reduce((sum1,currentValue) => sum1+currentValue);
//sum = 72;

B

var arr= ['tian','zhao','li'];
var arrs = arr.reduce((arrs,currentValue) => arrs+','+currentValue);

//arrs="tian,zhao,li";

4、如何在脚本中实现自己的高阶函数呢?

假设我们有一个字符串数组,我们希望把它转换为整数数组,其中每个元素代表原始数组中字符串的长度。

var arr = ['wwwwwww','qwe'];
function mapForEach(arr,fn){
    var newarr = [];
    for(let i = 0;i

 

你可能感兴趣的:(前端)