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];
}
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++;
}
}
当前输出
5,4,3,2,1
Sum: 054321
我想要什么
5,4,3,2,1
Sum: 15
我正在尝试创建一个程序,用户在数组中添加数字,程序会计算这些数字的不同内容。
当我调用sum(数组)时;使用预设数组,如var array = [5,4,3,2,1];求和工作正常,并按预期输出15 但是,当我包含用于获取数组的数字集的函数时,而不是具有预设数组,输出的总和为054321。
为了我自己的理解,我想手动进行数组计算,而不是使用reduce();
我做错了什么?
答案 0 :(得分:4)
将您的提示值解析为整数 - 将其添加为字符串并与+
符号连接:
array[count] = parseInt(prompt("Number " + (count + 1)));
MDN also recommends将Number
转换为另一个选项:
请注意,结果是一个字符串。这意味着你有时应该 转换用户给出的值。例如,如果他的回答应该是 一个数字,你应该将值转换为数字。 var aNumber = Number(window.prompt(“键入数字”,“”));
答案 1 :(得分:1)
//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;
}
答案 2 :(得分:1)
您的输入存储为数组中的字符串。您需要将值转换为数字才能使求和正确发生。
使用parseInt(设置为基数10)来获得正确的答案。
total += parseInt(params[i],10);
答案 3 :(得分:0)
来自提示的值是字符串,这就是为什么不按照你希望在params [i]之前加上加号而你正确的
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++;
}
}
答案 4 :(得分:0)
这是一个单线解决方案:
function sum(params) {
return params.map(function(item) { return parseInt(item); }).sum()
}
答案 5 :(得分:0)
将所有内容都相同,只需将用户输入解析为整数即可。这里的问题是数字被视为字符串。
像这样修改你的和函数:
//Function to Sum Array
function sum(params){
var total = 0 ;
for (i = 0; i < params.length; i++){
$num = parseInt(params[i]);
total += $num;
}
return total;
}
那就是你,你已经完成了。