这是我的:
// My globals
var output = $("#output");
function m_o() {
// var input = $("#input");
// var value = input.val();
var value = "SCORE";
// Setting
var r_o = {
// Setting #customizing
A: "1",
B: "2",
C: "3",
D: "4",
E: "5",
F: "6",
G: "7",
H: "8",
I: "9",
J: "10",
K: "11",
L: "12",
M: "13",
N: "14",
O: "15",
P: "16",
Q: "17",
R: "18",
S: "19",
T: "20",
U: "21",
V: "22",
W: "23",
X: "24",
Y: "25",
Z: "26",
};
// Translating
var re = new RegExp(Object.keys(r_o).join("|"), "g");
value = value.replace(re, function (matched) {
return r_o[matched];
});
value = parseInt(value.split("").join(" + "), 10);
output.val(value);
}
<!doctype html>
<html>
<head>
<title>5X Script</title>
</head>
<body>
<!--<textarea id="input">
</textarea>-->
<input type="button" value="Translate" onclick="m_o()"/>
<textarea id="output">
</textarea>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
</html>
按下翻译按钮后,texarea 将显示1
。
这不是应该发生的事情。我们的输入是SCORE
,所以结果应该是“19+3+15+18+5”。换句话说,输出 应该等于 60
。
请你解释一下,我真的很难理解。
最佳答案
您可以避免存储 "letter":"number"
映射,利用 Ascii 值,只需转换大写并减去 64
function m_o() {
var value ="SCORE";
var finalCount = 0;
for (var i = 0; i < value.length; i++) {
finalCount += (value.toUpperCase().charCodeAt(i) - 64);
}
$("#output").html(finalCount);
}
点击 Fiddle Demo
关于javascript - 将字符串更改为数字并总结数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31372109/