代码之家  ›  专栏  ›  技术社区  ›  Boby Marley

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

  •  1
  • Boby Marley  · 技术社区  · 6 年前

    嗨,我将使用多个序列,所以我使用了这个方法。现在它得到了字母的适当数字,我可以输入单词,它对字母求和,但是当使用空格时,我得到了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 回复  |  直到 6 年前
        1
  •  1
  •   pretzelhammer Paras Bhattrai    6 年前

    您可以添加 ' ' 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
  •   Bucket faoud    6 年前

    映射的值 ' ' 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 
    }
    
        3
  •  1
  •   Nina Scholz    6 年前

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

    这与 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>