美文网首页PHP程序员@IT·互联网
JavaScript函数式编程-高阶函数reduce(三)

JavaScript函数式编程-高阶函数reduce(三)

作者: 陈7号 | 来源:发表于2016-08-08 14:28 被阅读98次

    概述
    对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。
    语法

    arr.reduce(callback[, initialValue])

    参数

    • callback(一个在数组中每一项上调用的函数,接受四个函数:)
      • previousValue(上一次调用回调函数时的返回值,或者初始值)
      • currentValue(当前正在处理的数组元素)
      • currentIndex(当前正在处理的数组元素下标)
      • array(调用reduce()方法的数组)
    • initialValue(可选的初始值。作为第一次调用回调函数时传给previousValue的值)

    返回值
    通过最后一次调用回调函数获得的累积结果。

    var orders = [
        {amount: 100},
        {amount: 238},
        {amount: 300},
        {amount: 50}
    ];
    
    // 使用for循环实现累加
    var total = 0;
    for(var i = 0; i < orders.length; i++) {
        total += orders[i].order;
    }
    
    // 使用reduce重写
    var total = orders.reduce(function(sum, order){
        return sum + order.amount;
    }, 0);
    
    // 使用es6重写
    var total = orders.reduce((sum, order) => sum + order.amount, 0);
    
    console.log(total);
    // 输出为688
    

    相关文章

      网友评论

      • 文字上的月鸟:您好,想请教一个问题:如果一个参数>100值就不能等于0;放开参数限制,就会导致系统效率灰常灰常慢。怎么才能解决这个问题,求神解
        文字上的月鸟: @皮蛋的主人 我是一个测试的it小白,我也不太懂,就只知道有这么个参数限制,而我只是想干掉这个参数,但it说会影响到效率,导致系统反应慢。但还是谢谢你!
        陈7号: @文字上的月鸟 一个参数指的是哪个参数,有点没明白你问的问题,能把问题写的清楚一点吗😳

      本文标题:JavaScript函数式编程-高阶函数reduce(三)

      本文链接:https://www.haomeiwen.com/subject/jvlrsttx.html