我制作了一个 Javascript 代码,它应该在一个数组中取两个数字,从低到高排列它们,然后返回它们之间和包括它们的每个数字的总和。所以 sumAll(1, 4) // 返回 1 + 2 + 3 + 4 的总和,即 10。但是,当我这样做时,我的变量 total 不会在 for 循环中从 0 改变。
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 项目,因此它附加到规范 js 文件。所以这段代码的唯一其他部分实际上不是我调用数组而是
module.exports = sumAll
规范文件要求:
var sumAll = require('./sumAll')
describe('sumAll', function() {
it('sums numbers within the range', function() {
expect(sumAll(1, 4)).toEqual(10);
});
您问题中的代码运行良好,但是,如果您仍有问题,可以尝试以下操作:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句