我正在尝试制作一个程序,将每个作为参数给出的数字相加。为此,我编写了以下代码:
var x = 0;
var i = 2;
while (isNaN(+process.argv[i + 1]) == false){
x = +process.argv[i] + +process.argv[i + 1];
i++;
}
console.log(x);
问题是我写的代码只加总了最后一个参数。
我使用node sumArgs.js 1 2 3
启动我的代码
它返回5
。
我的代码有什么问题,为什么它没有按计划运行?
答案 0 :(得分:1)
每次循环时会发生什么,它是取当前参数,然后是下一个,并将x设置为等于它们的总和。
x需要添加,而不是设置。您可以这样做:
x += process.argv[i]
或
x = x + process.argv[i]
我也不确定你为什么要在每个循环中添加2个参数,因为这会导致最后的总和不正确(除非你每次循环增加两次)。
我应该注意到,减少它的地图,如在另一个注释中一样,不会起作用,因为前两个参数不是传递给程序的参数,它们将是" node"和" program.js"。
var x = 0;
var i = 2;
while (isNaN(+process.argv[i]) == false){
x = x + process.argv[i];
i++;
}
console.log(x);
但是,你可以做的是使用切片:
var sum = process.argv.slice(2).reduce(function(previousValue, currentValue) {
return previousValue + currentValue;
});