返回一个范围内的所有数字

jyo*_*006 2 javascript sorting reduce

function sumAll(arr) {
    var list = [];

    for (var i = arr[0]; i <= arr[1]; i++) {
        list.push(i);
    }

    var total = list.reduce(function(a, b) {
        return a + b;

    });

    return total;
}

sumAll([10, 5]);
//sumAll([1, 4]);  //returns 10
//sumAll([5, 10]); //returns 45
//sumAll([4, 1]);
Run Code Online (Sandbox Code Playgroud)

我需要对给定参数之间的每个数字求和.为sumAll([1, 4])sumAll([5, 10]).代码将通过,因为它会在两个参数之间创建所有数字并添加它.但是,对于sumAll([10, 5])sumAll([4, 1]),因为更大的数字是第一个参数,我相信它不会运行var list.我尝试.sort()在两者之间使用方法,以便对数字进行排序但无法使其工作.我如何使用Math.min()Math.max()使用此代码?

jca*_*er2 5

以下是我使用m=arr[0]n=arr[1]执行此操作的方法:

1+2+...+n = n(n+1)/2
Run Code Online (Sandbox Code Playgroud)

其他人发布代码使用Math.min; IMO Math.maxarr[0] < arr[0] ? arr[0] : arr[1]函数使得更可读的代码比?:运营商.

还有两美分:我相信根本不做一件事会更简单Math.min; 而是说Math.max并增加它.像这样:

m+(m+1)+...+n
Run Code Online (Sandbox Code Playgroud)


Nig*_*gel 5

这是数学方程式派上用场的时代之一。查看以下代码:

function sumAll(arr) {
max=Math.max(arr[0],arr[1]);
min=Math.min(arr[0],arr[1]);
return (max*(max+1)/2)-((min-1)*min/2);
}
Run Code Online (Sandbox Code Playgroud)

逻辑很简单,对吧?:)