欢迎访问宙启技术站
智能推送

高阶函数如何实现

发布时间:2023-06-10 22:26:42

高阶函数是指可以接受函数作为参数或返回函数的函数。JavaScript中函数可以作为变量进行传递和赋值,从而实现高阶函数。在JavaScript中,可以使用函数表达式或函数声明定义函数。

函数表达式:

var myFunc = function() {

  // 函数体

};

函数声明:

function myFunc() {

  // 函数体

}

一些内置的高阶函数:

1. map

map函数将一个数组映射为另一个数组,每个元素可以进行转换。语法:arr.map(callback(currentValue[, index[, array]])[, thisArg])

var arr = [1, 2, 3];

var newArr = arr.map(function(num) {

  return num * 2;

});

// newArr = [2, 4, 6]

2. filter

filter函数返回一个新的数组,它包含符合条件的所有元素。语法:arr.filter(callback(element[, index[, array]])[, thisArg])

var arr = [1, 2, 3];

var newArr = arr.filter(function(num) {

  return num > 1;

});

// newArr = [2, 3]

3. reduce

reduce函数是对数组中所有元素进行归纳的函数,将它们汇总起来。语法:arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

var arr = [1, 2, 3];

var sum = arr.reduce(function(total, num) {

  return total + num;

});

// sum = 6

4. sort

sort函数对数组进行排序,可以传入一个比较函数来定义排序规则。语法:arr.sort([compareFunction])

var arr = [3, 1, 2];

arr.sort(function(a, b) {

  return a - b;

});

// arr = [1, 2, 3]

自定义高阶函数:

1. forEach

forEach函数是对数组中每个元素执行指定操作的函数。语法:arr.forEach(callback(currentValue[, index[, array]])[, thisArg])

function forEach(arr, func) {

  for (var i = 0; i < arr.length; i++) {

    func(arr[i], i, arr);

  }

}

2. map

自定义map函数,接受一个数组和一个函数作为参数,返回一个新的数组,它包含经过函数转换后的每个元素。语法:map(arr, func)

function map(arr, func) {

  var newArr = [];

  for (var i = 0; i < arr.length; i++) {

    newArr.push(func(arr[i]));

  }

  return newArr;

}

3. filter

自定义filter函数,接受一个数组和一个函数作为参数,返回一个新的数组,它包含所有满足函数条件的元素。语法:filter(arr, func)

function filter(arr, func) {

  var newArr = [];

  for (var i = 0; i < arr.length; i++) {

    if (func(arr[i])) {

      newArr.push(arr[i]);

    }

  }

  return newArr;

}

4. reduce

自定义reduce函数,接受一个数组、一个函数和一个初始值作为参数,对数组中所有元素进行归纳,并将结果返回。语法:reduce(arr, func, initialValue)

function reduce(arr, func, initialValue) {

  var total = initialValue;

  for (var i = 0; i < arr.length; i++) {

    total = func(total, arr[i]);

  }

  return total;

}

总结:

高阶函数是一种强大的工具,可以使代码更具有灵活性和可复用性。对于函数式编程来说,它是至关重要的。在JavaScript中,内置的高阶函数有很多,同时也可以自定义一些高阶函数来处理不同的需求。特别是forEach、map、filter和reduce这四个函数,它们是函数式编程能够做到的很好的例子,值得我们深入学习和应用。