我是一名初学程序员,我知道这可能是一个容易出问题的问题,我很难理解逻辑。 我正在研究一个用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);
答案 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
:
alphabet[(j+13)%26]
&#13;