【问题标题】:JavaScript sum of numbers in an array producing string instead of numbers [duplicate]JavaScript数组中的数字总和产生字符串而不是数字[重复]
【发布时间】:2021-03-25 02:59:14
【问题描述】:

下面的代码输出的是一串数字,而不是数组中数字的总和。例如,如果 n 设置为 3,并且将数字 1 2 3 添加到数组中,则当我需要它为 6 时,输出为 0123。我只能使用 while 循环而不是 for 循环,这就是代码看起来的原因有点奇怪。有人能解释一下为什么输出是一个字符串而不是数字的总和吗?

var n = -1;
var n2 = 0;
var numbers = [];

while (n < 0) {
    n = prompt("Please enter a positive interger");
}

while (n > 0) {
    n2 = prompt("Please enter a interger");
    numbers.push(n2);
    n = n - 1
}
var sum = numbers.reduce(function(a, b){
    return a + b;
}, 0);

alert(sum);

【问题讨论】:

  • 你需要使用parseInt。

标签: javascript


【解决方案1】:

提示总是返回一个字符串。你必须解析它:

strN = prompt("Please enter a positive interger");
n = parseInt(strN);

【讨论】:

    【解决方案2】:

    您需要更改的只是 push 数组中的数字

    numbers.push(n2);
    

    到

    numbers.push(parseInt(n2, 10));
    

    因为提示总是相信用户插入了一个字符串。

     var n = -1;
        var n2 = 0;
        var numbers = [];
    
        while (n < 0) {
            n = prompt("Please enter a positive interger");
        }
    
        while (n > 0) {
            n2 = prompt("Please enter a interger");
            numbers.push(parseInt(n2, 10));
            n = n - 1
        }
        var sum = numbers.reduce(function(a, b){
            return a + b;
        }, 0);
        
        alert(sum);

    【讨论】:

    • 非常感谢,javascript 新手并没有意识到提示总是给出一个字符串
    猜你喜欢
    • 2017-07-06
    • 2019-03-29
    • 2018-05-01
    • 2015-02-26
    • 2022-12-16
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多