空格在Javascript中写为b

时间:2013-12-10 14:06:54

标签: javascript

我正在尝试使用JavaScript完成python挑战,而且我被困在我的代码上

var letters = ["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"];

var userInput = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp.        bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.";

for(x=0; x<userInput.length; x++){
    var key = userInput[x];
    var findinLetters = letters[letters.indexOf(key)+2];
    document.write(findinLetters);
}

代码的结果是:

  

ibhopebyoubdidntbtrundefinednslundefinedtebitbundefinedybhundefinedndbbthundefinedtsbwhundefinedtbcomputersbundefinedrebforbbdoingbitbinbundefinedybhundefinedndbisbinefficientbundefinedndbthundefinedtbsbwhybthisbtextbisbsoblongbbusingbstringbmundefinedketrundefinednsbbbisbrecommendedbbnowbundefinedpplybonbtheburlb

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:8)

如果在数组中找不到该项,

indexOf()将返回-1 您需要处理此问题,而不是盲目地添加2并将所有未知字符转换为b

您还需要处理数组中的最后两个字符,而不是越过末尾。

答案 1 :(得分:0)

这是因为letters数组中没有空格字符。所以它返回-1而你正在添加2。此

letters.indexOf(key)+2

得1,这是数组中“b”的索引。