重复字母表

时间:2018-02-20 17:38:54

标签: javascript arrays loops logic

我是一名初学程序员,我知道这可能是一个容易出问题的问题,我很难理解逻辑。 我正在研究一个用ROT13密码破译Caesars Cipher的程序。它是FreeCodeCamp的任务之一。但是他们的解决方案对我来说很难在我的技能水平上理解,所以我想以自己的方式做到这一点。我设法把它弄得很远,但我偶然发现了一个问题。我正在使用数组,我将返回带有解密消息的数组。在这种情况下的输出应该是[F,R,E,E,C,O,D,E,C,A,M,P],但我得到[未定义,“R”,未定义,未定义, undefined,“O”,undefined,undefined,undefined,undefined,undefined,“P”]。据我所知,我得到了未定义,因为在未定义的情况下j + 13大于26,并且字母表或数组中只有26个字母。我无法弄清楚如何制作,因此在j + 13> j的情况下,字母表将重复出现。 26.任何提示都会非常有用

let str = "SERR PBQR PNZC";
        let strArr = str.split("");
        let alphabet = [];
        let tempArr = [];
        for (i = 65; i <= 90; i++){
            alphabet.push(String.fromCharCode(i))
        }
        for (i = 0; i < strArr.length; i++) {
            for (j = 0; j < alphabet.length; j++) {
                if (strArr[i] === alphabet[j]) {
                    tempArr.push(alphabet[j+13]);

                }

            }

        }
    console.log(tempArr);

1 个答案:

答案 0 :(得分:1)

[options.entry_points] console_scripts = octodns-compare = octodns.cmds.compare:main octodns-dump = octodns.cmds.dump:main octodns-report = octodns.cmds.report:main octodns-sync = octodns.cmds.sync:main octodns-validate = octodns.cmds.validate:main 通常是未定义的,因为只要alphabet[j+13] j+13超过字母表的结尾。您可以使用remainder operator %有效地再次回绕到数组的开头,而不是超过它的结尾。只需将其更改为j >= 13

&#13;
&#13;
alphabet[(j+13)%26]
&#13;
&#13;
&#13;