Javascript 变量连接而不是添加

Javascript Variable concatenate instead of adding

需要在 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。

您需要删除 lettervalue 函数中数字两边的引号,这会使 Javascript 将它们视为字符串而不是数字。

例如:

  case "d": return 4;

而不是

  case "d": return "4";  

return 整数,即不带引号的 1,2 应该可以解决您的问题。

否则试试

bbbb += parseInt(lettervalue(fna.charAt(i)));

如评论中所建议,return 数字而不是字符串。否则 javascript 使用 + 运算符构建一个字符串,认为您想连接字符而不是添加数字。

case "a": return 1;                    
case "b": return 2;          
case "c": return 3;           
case "d": return 4;  

而不是

case "a": return "1"; 

改成..

case "a": return 1;