題目
我們會傳遞給你一個包含兩個數(shù)字的數(shù)組。返回這兩個數(shù)字和它們之間所有數(shù)字的和溉潭。
最小的數(shù)字并非總在最前面。
如果你被難住了少欺,記得使用 Read-Search-Ask喳瓣。嘗試與他人結(jié)伴編程、編寫你自己的代碼赞别。
這是一些對你有幫助的資源:
Math.max()
Math.min()
Array.reduce()
function sumAll(arr) {
return 1;
}
sumAll([1, 4]);
思路
- 先將兩個數(shù)字判斷大小畏陕,找到最大值,和最小值仿滔,應(yīng)該會用到提供的max()蹭秋,min()兩個函數(shù);
- 循環(huán)計算mi -> max 間所有數(shù)字的和堤撵;
解答
- 使用題目要求的 reduce仁讨;
function sumAll(arr) {
var max = Math.max(arr[0],arr[1]); // 取得最大值
var min = Math.min(arr[0],arr[1]); // 取得最小值
var sum = []; //存儲取到的所有數(shù)
for (var i=0;i<= max-min;i++){
sum[i] = min+i;
}
return sum.reduce(function(a,b){
return a+b;
});
}
sumAll([1, 4]);
- 但經(jīng)過思考發(fā)現(xiàn),這個寫法有點多此一舉实昨,并不需要將取到的數(shù)字先存起來洞豁,直接循環(huán)時相加就可以了,于是修正代碼如下:
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]);
發(fā)現(xiàn)第二種比第一種代碼簡潔很多荒给;