将字母转换为带空格的数字

时间:2018-08-17 19:07:41

标签: javascript numbers letter

嗨,我将使用多个序列,所以我使用了这种方法。现在,它会为字母获取适当的数字,我可以输入单词并将其相加,但是使用空格时我会得到NaN。我如何才能在不输入NaN的情况下用空格键入单词?

<html>
<body>
Word: <input type="text" name="fname" id="txt" value="Type a word..."><br><br>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
</body>
</html>

function myFunction() {
var alphabet = {
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 
}
var str = document.getElementById("txt").value;
var total = 0;
for (var i = 0; i < str.length; i++)
total += alphabet[str[i]];
alert(total);
document.getElementById("demo").innerHTML = total;
}

3 个答案:

答案 0 :(得分:1)

' '对象中为alphabet映射一个值:

var alphabet = {
    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,
    ' ': 42 
}

答案 1 :(得分:1)

您可以在字母地图中添加一个' '(空格键),并将其值设置为0

function myFunction() {
var alphabet = {
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,
' ': 0
};
var str = document.getElementById("txt").value;
var total = 0;
for (var i = 0; i < str.length; i++)
total += alphabet[str[i]];
alert(total);
document.getElementById("demo").innerHTML = total;
}
Word: <input type="text" name="fname" id="txt" value="Type a word..."><br><br>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

答案 2 :(得分:1)

对于未定义的字母(例如空格或其他字符),您可以使用零作为默认值。

这与logical OR ||一起使用,测试第一个操作数,如果它是falsy,例如undefined或零或空白''(以及其他一些数字) ,则将另一个操作数(在本例中为零)作为要添加到total的值。

total += alphabet[str[i]] || 0;
//                        ^^^^

function myFunction() {
    var alphabet = { 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 },
        str = document.getElementById("txt").value,
        total = 0;

    for (var i = 0; i < str.length; i++) {
        total += alphabet[str[i]] || 0;
    }

    document.getElementById("demo").innerHTML = total;
}
Word: <input type="text" name="fname" id="txt" placeholder="Type a word..."><br><br>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>