为什么我的for循环在Javascript中改变变量金额?

时间:2017-11-30 15:07:39

标签: javascript

我制作了一个Javascript代码,它应该在数组中包含两个数字,从最低到最高排列它们,然后返回它们之间和之间的每个数字的总和。所以sumAll(1,4)//返回1 + 2 + 3 + 4的总和,即10.然而,当我这样做时,我的变量total不会从0变为my循环。

var sumAll = function(arr) {
   var lower = Math.min(arr[0], arr[1]);
   var upper = Math.max(arr[0], arr[1]);

   var total = 0;

   for (var i = lower; i <= upper; i++) {
    total += i;
    }
return total;
}

当使用1和4时,此代码应返回10,但它给出0因为var total = 0.当我手动将var total更改为等于10时,它变为10,这意味着我的for循环不起作用它应该,我不知道为什么。非常感谢任何帮助,我是编码的新手,并且已经在这方面工作了一段时间。

此外,这是一个TDD项目,因此它附加到spec js文件。所以这段代码的唯一其他部分实际上并不是我调用数组而是

module.exports = sumAll

spec文件要求:

var sumAll = require('./sumAll')
describe('sumAll', function() {
  it('sums numbers within the range', function() {
expect(sumAll(1, 4)).toEqual(10);
  });

1 个答案:

答案 0 :(得分:0)

您问题中的代码效果很好,但是,如果您仍然遇到问题,可以尝试这样做:

function sumAll(n1, n2) {
  var numbers = [];
  numbers.length = Math.abs(n2-n1)+1; numbers.fill(0);
  numbers = numbers.map((i, j) => (Math.min(n1,n2)+j))
  return numbers.reduce((acc, i) => (acc+=i))
}

sumAll(1,4); //10