在数组中添加数字。得到奇怪的输出。Javascript

在数组中添加数字。得到奇怪的输出。Javascript,javascript,arrays,function,sum,Javascript,Arrays,Function,Sum,我想要什么 5,4,3,2,1 Sum: 054321 我正在尝试制作一个程序,用户将数字添加到数组中,程序计算这些数字的不同内容 当我调用sum(数组)时;使用预设数组,如var array=[5,4,3,2,1];求和工作正常,输出15,如预期。 但是,当我包含函数以获取数组的数字集时,输出的总和不是预设数组,而是054321 为了自己的理解,我想手动执行数组计算,而不是使用reduce() 我做错了什么?//函数对数组求和 5,4,3,2,1 Sum: 15 函数和(参数){ var合

我想要什么

5,4,3,2,1
Sum: 054321
我正在尝试制作一个程序,用户将数字添加到数组中,程序计算这些数字的不同内容

当我调用sum(数组)时;使用预设数组,如var array=[5,4,3,2,1];求和工作正常,输出15,如预期。
但是,当我包含函数以获取数组的数字集时,输出的总和不是预设数组,而是054321

为了自己的理解,我想手动执行数组计算,而不是使用reduce()

我做错了什么?

//函数对数组求和
5,4,3,2,1
Sum: 15
函数和(参数){ var合计=0; 对于(i=0;i
//函数对数组求和
函数和(参数){
var合计=0;
对于(i=0;i
提示符中的值是字符串,这就是为什么“不按您的意愿添加”“在参数[i]之前添加加号”的原因,并且您的参数是正确的

   //Function to Sum Array
    function sum(params){
        var total = 0 ;
        for (i = 0; i < params.length; i++){
            var temp = parseInt(params[i]);
            total += temp;
        }
        return total;
    }
var数组=[];
getNum();
document.write(数组);
写(“
Sum:+Sum(数组)); //函数求和数组 函数和(参数){ var合计=0; 对于(i=0;i
提示符中的值是字符串,这就是为什么“不按您的意愿添加”“在参数[i]之前添加加号”的原因,并且您的参数是正确的

   //Function to Sum Array
    function sum(params){
        var total = 0 ;
        for (i = 0; i < params.length; i++){
            var temp = parseInt(params[i]);
            total += temp;
        }
        return total;
    }
var数组=[];
getNum();
document.write(数组);
写(“
Sum:+Sum(数组)); //函数求和数组 函数和(参数){ var合计=0; 对于(i=0;i
您的输入将作为字符串存储在数组中。您需要将该值转换为一个数字,才能正确进行求和

使用parseInt(设置为基数10)获得正确答案

var array = [];        
getNum();
document.write(array);
document.write("<br>Sum: " + sum(array));

//Function to Sum Array
function sum(params){
    var total = 0 ;
    for (i = 0; i < params.length; i++){
        total += +params[i]; //make the params[i] to be a number
    }
    return total;
}


//Function to get Numbers in Array
function getNum(){
    var count = 0;
    alert("Please enter 5 numbers");
    while(count < 5) {
        array[count] = prompt("Number " + (count + 1));
        count++;
    }
}

您的输入将作为字符串存储在数组中。您需要将该值转换为一个数字,才能正确进行求和

使用parseInt(设置为基数10)获得正确答案

var array = [];        
getNum();
document.write(array);
document.write("<br>Sum: " + sum(array));

//Function to Sum Array
function sum(params){
    var total = 0 ;
    for (i = 0; i < params.length; i++){
        total += +params[i]; //make the params[i] to be a number
    }
    return total;
}


//Function to get Numbers in Array
function getNum(){
    var count = 0;
    alert("Please enter 5 numbers");
    while(count < 5) {
        array[count] = prompt("Number " + (count + 1));
        count++;
    }
}

将提示值解析为整数-它将作为字符串添加,并与
+
符号连接:

        total += parseInt(params[i],10);

要将编号转换为另一个选项,请执行以下操作:

请注意,结果是一个字符串。这意味着你有时应该 强制转换用户给定的值。例如,如果他的答案是 如果是数字,则应将值强制转换为数字。变数= 数字(window.prompt(“键入数字”)


将提示值解析为整数-它将作为字符串添加,并与
+
符号连接:

        total += parseInt(params[i],10);

要将编号转换为另一个选项,请执行以下操作:

请注意,结果是一个字符串。这意味着你有时应该 强制转换用户给定的值。例如,如果他的答案是 如果是数字,则应将值强制转换为数字。变数= 数字(window.prompt(“键入数字”)


以下是一个单线解决方案:

array[count] = parseInt(prompt("Number " + (count + 1)));

以下是一个单线解决方案:

array[count] = parseInt(prompt("Number " + (count + 1)));

一切都一样,只需将用户输入解析为整数。这里的问题是,数字被视为字符串

如下所示修改求和函数:

function sum(params) {
    return params.map(function(item) { return parseInt(item); }).sum()
}
//求和数组的函数
函数和(参数){
var合计=0;
对于(i=0;i

就这样,完成了。

一切都一样,只需将用户输入解析为整数即可。这里的问题是,数字被视为字符串

如下所示修改求和函数:

function sum(params) {
    return params.map(function(item) { return parseInt(item); }).sum()
}
//求和数组的函数
函数和(参数){
var合计=0;
对于(i=0;i

就这样,您完成了。

您正在将输入数字保存到数组中作为字符串,因此sum函数正在进行字符串连接,您需要将
prompt()
的返回值解析为
int
,然后再将其添加到数组中。您正在将输入数字保存到数组中作为字符串,因此,sum函数正在进行字符串连接,在将其添加到数组之前,需要将
prompt()
的返回值解析为
int
。在javascript中使用parseInt时,始终需要包含基数参数。JS将以0开头的数字(如
09
)视为八进制,以
0x
开头的数字视为十六进制
parseInt(params[i],10)
。在javascript中使用parseInt时,始终希望包含基数参数。JS将以0开头的数字(如
09
)视为八进制,以
0x
开头的数字视为十六进制
parseInt(参数[i],10)