给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。(最小的数字并非总在最前面)
思路1:用sort()方法 对数字排序得出最大最小值,进行累加。
function sumAll(arr) {
//对数组进行升序排序
arr.sort(function(x,y){
return x-y;
});
//定义一个变量,用来存放和
var sum = 0;
//求出和
for(var i = arr[0];i <= arr[1];i++){
sum += i;
}
//返回和
return sum;
}
思路2:使用Math.max和Math.min获得数组的最大最小值,再把它们之间的数放入新的数组, 最后用 redece()方法获得和。
注:(1)js中Math.max(),Math.min()不能接受数组作参数,Math.max(array)这种操作是不存在的;
而apply()是所有函数都有的方法,fun.apply(thisArg, [argsArray]),thisArg是fun 函数运行时指定的 this 值,
argsArray是一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 fun 函数。
(2)reduce()方法可以对数组的每一个元素进行操作,下面代码中value是单个元素的值,sum则是这些元素的累加值。
function sumAll(arr) {
//求数组中的最大值
function getMaxOfArr(numArr) {
return Math.max.apply(null, numArr);
}
//求数组中的最小值
function getMinOfArr(numArr) {
return Math.min.apply(null, numArr);
}
var max = getMaxOfArr(arr);
var min = getMinOfArr(arr);
//定义新数组,存放最大值和最小值之间所有的值
var newArr = [];
for (var i = min; i <= max; i++) {
newArr[i - min] = i;
}
//reduce方法求和
var sum = newArr.reduce(function (sum, value) {
return sum + value;
}, 0);
return sum;
}
思路3:判断数组中两个数的大小,进行累加求和。
function sumAll(arr) {
var sum=0;
if(arr[0]<arr[1]){
for(var i=arr[0];i<=arr[1];i++){
sum += i;
}
}else{
for(var k=arr[1];k<=arr[0];k++){
sum += k;
}
}
return sum;
}