FreeCodeCamp筆記之:Sum All Numbers in a Range

题目

我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。
最小的数字并非总在最前面。
如果你被难住了,记得使用 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Math.max()
Math.min()
Array.reduce()

function sumAll(arr) {
  return 1;
}
sumAll([1, 4]);

思路

  • 先将两个数字判断大小,找到最大值,和最小值,应该会用到提供的max(),min()两个函数;
  • 循环计算mi -> max 间所有数字的和;

解答

  • 使用题目要求的 reduce;
function sumAll(arr) {
   var max = Math.max(arr[0],arr[1]); // 取得最大值
  var min = Math.min(arr[0],arr[1]); // 取得最小值
  var sum = [];    //存储取到的所有数
   for (var i=0;i<= max-min;i++){
     sum[i] = min+i; 
   }
     return sum.reduce(function(a,b){
       return a+b;
     });
   }
sumAll([1, 4]);
  • 但经过思考发现,这个写法有点多此一举,并不需要将取到的数字先存起来,直接循环时相加就可以了,于是修正代码如下:
 function sumAll(arr) {
   var max = Math.max(arr[0],arr[1]); // 取得最大值
   var min = Math.min(arr[0],arr[1]); // 取得最小值
   var sum =0; 
      for (var i=min;i<= max;i++){ 
              sum+= i; 
           }
            return sum;   
  }
      sumAll([1, 4]);

发现第二种比第一种代码简洁很多;

你可能感兴趣的:(FreeCodeCamp筆記之:Sum All Numbers in a Range)