JavaScript 高阶函数(map/reduce)

《JavaScript 高阶函数(map/reduce)》 JavaScript

高阶函数(Higher-order function)

概念 函数可以接受另一个函数作为参数的函数称作高阶函数

高阶函数简单例子

function powAdd (x,y,f) { //计算x+y 
    return f(x,2) + f(y,2);
}

var f = Math.pow;

console.log(powAdd(5,6,f)); //result = 61

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

function sqrt(x) { //数组元素开平方根
    return Math.sqrt(x);
}

var arr = [4,9,16,25,36];

console.log(arr.map(sqrt));

reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值,这个函数必须接收两个参数。

var arr = [1, 3, 5, 7, 9]; //累加数组元素
var res = arr.reduce(function (x, y) {
    return x + y;
});

console.log(res);

map & reduce练习

  1. 利用reduce()求积
var arr = [99,88,77,66];
function practices(arr) {
    var res = arr.reduce(function ans(x,y) {
        return x * y;
    });
    return res;
}
console.log(practices(arr));
  1. 把[1, 3, 5, 7, 9]变换成整数13579
var arr = [1,3,5,7,9];
function practice2(arr) { 
    var res = arr.reduce(function(x,y) {
        return x * 10 + y;
    });
    return res;
}
console.log(practice2(arr));
  1. 把一个字符串13579先变成Array——[1, 3, 5, 7, 9],再利用reduce()就可以写出一个把字符串转换为Number的函数
var str = '13579';
function string2int(str) {
    var res = [];
    for (var i = 0; i < str.length; i++)
        res[i] = str[i] - '0';
    var res = res.reduce( function(x,y) {
        return x * 10 + y;
    })
    return res;
}
console.log(string2int(str));
  1. 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]。
var arr = ['adam', 'LISA', 'barT'];
function normalize(arr) {
    return arr.map(function(x) {
        return x[0].toUpperCase() + x.substring(1).toLowerCase()
    });
} 
console.log(normalize(arr));
    原文作者:SpiffyEight77
    原文地址: https://www.jianshu.com/p/6f9f51279162
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞