我的javascript中的数字不会相加

我的javascript中的数字不会相加,javascript,arrays,sum,addition,Javascript,Arrays,Sum,Addition,所以我需要代码对数组中的随机数进行加法。如果总和大于10,则应表示“超过”,否则表示“低于” ` 函数数组(){ var oneten=[1,2,3,4,5,6,7,8,9,10]; document.getElementById('demo').innerHTML=addy(oneten); } 函数addy(oneten){ var n; var输出; var sum=“”; 对于(i=0;i10){ 返回“结束”; } else{return“under”;} } 这里的问题是调试器将数

所以我需要代码对数组中的随机数进行加法。如果总和大于10,则应表示“超过”,否则表示“低于”

`

函数数组(){
var oneten=[1,2,3,4,5,6,7,8,9,10];
document.getElementById('demo').innerHTML=addy(oneten);
}
函数addy(oneten){
var n;
var输出;
var sum=“”;
对于(i=0;i<4;i++){
n=数学楼层((数学随机()*10)+1);
sum+=parseFloat(oneten[n])}
如果(总和>10){
返回“结束”;
}
else{return“under”;}
}

这里的问题是调试器将数字解码为字符串。运行时,总和将等于“1234”,而不是10(即1+2+3+4),因此它将始终返回“over”。我如何确保数据将被视为实际数字而不是字符串?我使用了parseFloat和parseInt,但是我得到了相同的结果,也许你可以尝试设置sum=0,因为像这样js将连接成一个字符串而不是一个int,你不应该将
sum
变量声明为
数字吗?另外,您不需要使用
parseFloat
函数,
oneten
数组元素的类型已经是
number

另一件事-
Math.random()*10)+1
1-10
范围中丢失的数字,在您的情况下,它将返回
未定义的
,因为
oneten
数组中没有索引为
10
的项。改用
Math.random()*10
,它将返回0-9范围内的数字

函数数组(){
var oneten=[1,2,3,4,5,6,7,8,9,10];
document.getElementById('demo').innerHTML=addy(oneten);
}
函数addy(oneten){
var n;
var输出;
var总和=0;
对于(i=0;i<4;i++){
n=数学地板((数学随机()*10));
总和+=一个整数[n];
}
控制台日志(总和);
如果(总和>10){
返回“结束”;
}否则{
返回“下”;
}
}
数组()

在javascript中键入强制

var s = "1";
var i = 1;

var i = i+1;
// 2    int + int = int
var s2 = s+1;
// "11" str + int = str
var s3 = i+"1";
// "11" int + str = str

为什么
sum
是一个字符串?!您不需要解析为整数或浮点,因为数组已经是整数数组了!真正的问题是,出于某种原因,
sum
是一个字符串。这可以回答我的问题。但在前面,我编写了“var sum;”,循环中的结果没有定义。不要这样做。@JamesClark将它设置为一个整数,0。这很有帮助。我只是把它设为等于零,现在它是固定的。
var s = "1";
var i = 1;

var i = i+1;
// 2    int + int = int
var s2 = s+1;
// "11" str + int = str
var s3 = i+"1";
// "11" int + str = str