如何使用javascript返回字符串中每个字母的数字

时间:2012-01-18 17:31:16

标签: javascript math

如果有人能给我一些想法,那就是......最后那里。

我正在寻找输入一个像"爱"并得到每个字母对应的数字之和

回答= 54

var a = 1;var b = 2;var c = 3;var d = 4;var e = 5;var f = 6;var g = 7;
var h = 8;var i = 9;var j = 10;var k = 11;var l = 12;var m = 13;
var n = 14;var o = 15;var p = 16;var q = 17;var r = 18;var s = 19;var t = 20;
var u = 21;var v = 22;var w = 23;var x = 24;var y = 25;var z = 26;


var addLetters = new Array(1);
addLetters[1] = "love";
var square01 = 12 + 15 + 22 + 5 ;
function (){
document.getElementById(square01).innerHTML;}}
感谢大家的帮助。

7 个答案:

答案 0 :(得分:4)

您可以使用字符串中字符的ascii代码,根本不需要长数组:

function sum(str) {
    var i, sum = 0, a = 'a'.charCodeAt(0) - 1;
    for (i = 0 ; i < str.length ; i++) {
        sum += str.charCodeAt(i) - a;
    }
}

alert(sum('love'));

答案 1 :(得分:1)

您需要设置这样的字母:

var alphabet = {
    a: 1,
    b: 2,
    c: 3
}

var word = "love";
var total = 0;
for (var i = 0; i < word.length; i++)
    total += alphabet[word[i]];

DEMO


修改

@am not i am声称IE8不会为这样的字符串编制索引,而且她通常是对的,因此,对于你可以做的垃圾浏览器是友好的

for (var i = 0; i < word.length; i++)
    total += alphabet[word.charAt(i)];

而不是

for (var i = 0; i < word.length; i++)
    total += alphabet[word[i]];

答案 2 :(得分:1)

  1. 使用 RegEx

    的闭包
    (function(w){
        var c=0;
        w.toLowerCase().replace(/[a-z]{1}/g,function(a){c+=a.charCodeAt(0)-97+1}); 
        return c;
    })("love")
    
  2. 琐碎的解决方案。

    var c=0;
    var str="love"
    var istr=str.toLowerCase()
    for(var i=0;i<istr.length;i++){
        c+=istr.charCodeAt(i)-"a".charCodeAt(0)+1
    }
    

答案 3 :(得分:1)

您不需要创建映射数组,假设您的单词都是可以使用的小写字母:

    var word = 'love', total = 0, codeA='a'.charCodeAt();
    for ( var i = 0; i < word.length; i++ ) {
            total += word.charCodeAt( i ) - codeA + 1;
    }

charCodeAt()返回一个字符的Unicode值,对于拉丁字母,这等于其ASCII字符,这是字母的顺序

答案 4 :(得分:0)

这将适用于你想要的东西(注意字母表的第一个元素是空的,因为我们想要一个= 1,而不是0)

var alphabet = ['','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
  , word = 'love'
  , letters = word.split('')
  , sum = 0

letters.forEach(function(letter){
  sum += alphabet.indexOf(letter)
})

答案 5 :(得分:0)

字母已经有数字赋值 - ASCII值。 A = 65,所以只需减去偏移量。

var phrase="abcd".toUpperCase();
var sum = 0
for(x=0;x<phrase.length;x++) {
     sum = sum + phrase.charCodeAt(x)-64;
}  
alert(sum)

答案 6 :(得分:0)

实际上,不需要做所有这些事情。我这里有一个简单的伎俩......

var word="Love";
var total=0;
for(i=0;i<word.length;i++){
 total+=((word[i].toLowerCase()).charCodeAt(0)-96);     
 }
 alert(total); // aleters 54