变量的值需要在for循环中添加..但不是添加它就是连接..我需要加在一起......
我会给我的代码请帮助..
//curage is current age
//fna is firstname
var bbbb=0;
while(bbbb < curage )
{
for(var i=0; i<fna.length; i++)
{
bbbb += lettervalue(fna.charAt(i));
}
}
function lettervalue(g)
{
switch(g)
{
case "a": return "1";
case "b": return "2";
case "c": return "3";
case "d": return "4";
case "e": return "5";
case "f": return "6";
case "g": return "7";
case "h": return "8";
case "i": return "9";
case "j": return "1";
case "k": return "2";
case "l": return "3";
case "m": return "4";
case "n": return "5";
case "o": return "6";
case "p": return "7";
case "q": return "8";
case "r": return "9";
case "s": return "1";
case "t": return "2";
case "u": return "3";
case "v": return "4";
case "w": return "5";
case "x": return "6";
case "y": return "7";
case "z": return "8";
default : return "0"
}
}
我得到的结果就像1234但我需要得到这个总和,如1 + 2 + 3 + 4 = 10.
答案 0 :(得分:4)
根据评论中的建议,返回数字而不是字符串。否则,javascript会使用+运算符构建一个字符串,以为您想要连接字符而不是添加数字。
case "a": return 1;
case "b": return 2;
case "c": return 3;
case "d": return 4;
答案 1 :(得分:3)
您需要删除lettervalue
函数中数字周围的引号,这会使Javascript将它们视为字符串而不是数字。
例如:
case "d": return 4;
而不是
case "d": return "4";
答案 2 :(得分:2)
返回整数,即没有引号的1,2可以解决您的问题。
其他尝试
bbbb += parseInt(lettervalue(fna.charAt(i)));
答案 3 :(得分:1)
而不是
case "a": return "1";
将其更改为..
case "a": return 1;