Javascript变量连接而不是添加

时间:2015-04-16 10:55:02

标签: javascript arrays cordova concatenation

变量的值需要在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.

4 个答案:

答案 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;