我制作了一个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);
});
答案 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