- 这个 function 接收一个数组参数 arr,其中包含两个数字。返回值为这两个数字范围内所有数字的总和
- 比如接收的是 [1, 4],那么输出就是 10
- 需要注意的是,如果接收的是 [4, 1],那么输出也应为 10
基本解法
function sumAll(arr) {// 用 left 代表较小的数,right 代表较大的数var left, right;var sum = 0;if (arr[0] < arr[1]) {left = arr[0];right = arr[1];} else {left = arr[1];right = arr[0];}for (var i = left; i <= right; i++) {sum += i;}return sum;}
优化-使用数学方法
Math.max() Math.min() 等差数列求和公式 : 首项加上末项的和乘以项数除以 2
function sumAll(arr){let left = Math.min.apply(null,arr)let right = Math.max.apply(null,arr)return (left + right) * (right -left +1) /2}
优化-使用数组方法
function sumAll(arr){let left = Math.min.apply(null,arr)let right = Math.max.apply(null,arr)var numArr = []for(var i = left;i<=right;i++){numArr.push(i)}return numArr.reduce((prev,next)=>{return prev + next})}
function sumAll(arr) {var numArr = Array.from({length: Math.abs(arr[0] - arr[1]) + 1}, (_, i) => i + Math.min.apply(null, arr));return numArr.reduce((prev, next) => prev + next);}
