如果有人能给我一些想法,那就是......最后那里。
我正在寻找输入一个像"爱"并得到每个字母对应的数字之和
回答= 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;}}
感谢大家的帮助。
答案 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]];
修改强>
@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)
使用 RegEx
的闭包(function(w){
var c=0;
w.toLowerCase().replace(/[a-z]{1}/g,function(a){c+=a.charCodeAt(0)-97+1});
return c;
})("love")
琐碎的解决方案。
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