Sum All Numbers in a Range

本文介绍了一个使用JavaScript实现的数组累加函数,该函数利用了数组的sort和reduce方法来计算两个数字及其间所有整数的总和。此外,还讲解了reduce方法的基本用法及参数说明。

我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。 最小的数字并非总在最前面。

function sumAll(arr) {
  var a=arr.sort();
  var x=Math.max.apply(null,a);
  var y=Math.min.apply(null,a);
 var sum=x+y;
  for(i=y+1;i<x;i++){
    arr.push(i);
 
}
   return arr.reduce(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
});
}
sumAll([1, 4]);

用到的知识:

arr.reduce(callback,[initialValue])

  • 概述
  • reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
  • 语法
  • arr.reduce(callback,[initialValue])
  • 参数
  • callback
  • 执行数组中每个值的函数,包含四个参数
  • previousValue
  • 上一次调用回调返回的值,或者是提供的初始值(initialValue)
  • currentValue
  • 数组中当前被处理的元素
  • index
  • 当前元素在数组中的索引
  • array
  • 调用 reduce 的数组
  • initialValue
  • 作为第一次调用 callback 的第一个参数。
  • 描述
  • reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
  • 回调函数第一次执行时,previousValue 和 currentValue 的取值有两种情况,如果 initialValue 在调用 reduce 时被提供,那么第一个 previousValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;如果initialValue 未被提供,那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。
  • 如果数组为空并且没有提供initialValue, 会抛出TypeError 。如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行。
  • 例如执行下面的代码

[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; });

取最大值:
Math.max(null,arr)
ES6之后有一个新的方法:Math.max(...arr)

转载于:https://my.oschina.net/mfeng/blog/752938

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值