JavaScript数组中数字求和,生成字符串而不是数字。
JavaScript数组中数字求和,生成字符串而不是数字。
下面的代码输出的是一个数字字符串,而不是数组中的数字之和。例如,如果将n设为3,并将数字1、2、3添加到数组中,输出结果是0123,而我需要的是6。这段代码只能使用while循环,而不能使用for循环,这也是代码看起来有点奇怪的原因。请问有人能解释一下为什么输出是一个字符串,而不是数字之和吗?\n
var n = -1; var n2 = 0; var numbers = []; while (n < 0) { n = prompt("请输入一个正整数"); } while (n > 0) { n2 = prompt("请输入一个整数"); numbers.push(n2); n = n - 1 } var sum = numbers.reduce(function(a, b){ return Number(a) + Number(b); }, 0); alert(sum);
JavaScript中的数组求和问题是一个常见的编程问题。通常情况下,我们可以通过遍历数组并将所有数字相加来解决这个问题。然而,有时我们可能会遇到一个特殊的情况,即在数组中的数字被解析为字符串而不是数字的情况。
在JavaScript中,prompt函数用于显示一个提示框,要求用户输入一个值。然而,prompt函数始终返回一个字符串,而不是一个数字。这就是导致数组求和问题出现的原因之一。
要解决这个问题,我们需要将字符串解析为数字。在JavaScript中,可以使用parseInt函数来将字符串转换为整数。下面是一个示例代码:
strN = prompt("Please enter a positive integer"); n = parseInt(strN);
在上面的代码中,我们首先使用prompt函数获取用户输入的字符串,并将其存储在变量strN中。然后,我们使用parseInt函数将strN解析为一个整数,并将其存储在变量n中。
通过将输入的字符串解析为数字,我们可以确保在进行数组求和操作时得到正确的结果。这样,我们就可以使用常规的遍历数组求和的方法来解决这个问题了。
总结起来,JavaScript中的数组求和问题可能会出现在字符串被解析为数字之前。通过使用parseInt函数将字符串解析为数字,我们可以解决这个问题,并得到正确的求和结果。
问题的原因是由于prompt函数始终返回一个字符串,导致在数组中存储的是字符串而不是数字。解决方法是使用parseInt函数将字符串转换为整数。
下面是代码的修正版本:
var n = -1; var n2 = 0; var numbers = []; while (n < 0) { n = prompt("请输入一个正整数"); } while (n > 0) { n2 = prompt("请输入一个整数"); numbers.push(parseInt(n2, 10)); n = n - 1; } var sum = numbers.reduce(function(a, b){ return a + b; }, 0); alert(sum);
在修正后的代码中,我们通过使用parseInt函数将n2转换为整数,确保我们在数组中存储的是数字而不是字符串。这样,我们可以正确地计算数组中数字的总和。