简体   繁体   English

如何获得我在 function 范围内声明的数组的总和?

[英]How can i get the sum of the array i declare in the range function?

I've made the range function which gives me the integers between start and end .我已经设定了 function 范围,它给了我startend之间的整数。 Now i have to make a sum function, that takes range as a parameter and gives the sum of that.现在我必须做一个sum function,它将range作为参数并给出总和。

function range(start, end) {

    let numbers = [];

    for(i=start; i <= end; i++) {

        numbers.push(i);

    }
    return numbers;
}
console.log(range(1,5));

function sum(arrayOfNumbers) {

    var sumOfNo;

    for(i=0; i <= arrayOfNumbers; i++) {
        
        arrayOfNumbers += sumOfNo;
    }

    return sumOfNo;
}
console.log(sum(range(10,15)));

you can use reduce for this你可以为此使用 reduce

 function range(start, end) { let numbers = []; for (i = start; i <= end; i++) { numbers.push(i); } return numbers; } console.log(range(10, 15)); function sum(arrayOfNumbers) { return arrayOfNumbers.reduce((a, n) => { return a += n; }, 0) } console.log(sum(range(2, 4)));

Some errors I find from the code (in sum function)我从代码中发现的一些错误(在 sum 函数中)

  • for loop need to loop less than arrayOfNumbers.length not arrayOfNumbers for循环需要循环小于arrayOfNumbers.length而不是arrayOfNumbers
  • values need to be added to the sumOfNo not the other way around.值需要添加到 sumOfNo 而不是相反。

the following resolves it.以下解决它。

 function range(start, end) { let numbers = []; for(i=start; i <= end; i++) { numbers.push(i); } return numbers; } console.log(range(1,5)); function sum(arrayOfNumbers) { var sumOfNo = 0; for(i=0; i < arrayOfNumbers.length; i++) { sumOfNo += arrayOfNumbers[i]; } return sumOfNo; } console.log(sum(range(10,15)));

 function getSumFromRange(start, end) { return ((end * (end + 1)) / 2) - ((start * (start + 1)) / 2) + start; } console.log(getSumFromRange(1, 10));

JSFiddle: click here JSFiddle:点击这里

it will be the efficient way to find sum of range.这将是找到范围总和的有效方法。 using simple liner female, referThe nth partial sum of the series使用简单的线母,参考系列的第n部分和

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM