gpt4 book ai didi

javascript - 重复字母表

转载 作者:行者123 更新时间:2023-11-29 23:26:44 25 4
gpt4 key购买 nike

我是一名初级程序员,我知道这可能是一个简单的问题,但我很难理解其中的逻辑。我正在开发一个用 ROT13 密码破译凯撒密码的程序。它是 FreeCodeCamp 的任务之一。但是他们的解决方案对我的技能水平来说很难理解,所以我想按照自己的方式去做。我设法做到了很远,但我偶然发现了一个问题。我正在处理数组,我将返回带有解密消息的数组。这种情况下的输出应该是 [F, R, E, E, , C, O, D, E, , C, A, M, P],但我得到的是 [undefined, "R", undefined, undefined,未定义,“O”,未定义,未定义,未定义,未定义,未定义,“P”]。我知道我得到了未定义,因为在未定义的情况下 j+13 大于 26,并且字母表或数组中只有 26 个字母。我不知道如何制作,所以字母表会在 j+13 > 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);

最佳答案

alphabet[j+13] 通常是未定义的,因为只要 j >= 13j+13 就会超过字母表的末尾。您可以使用 remainder operator %再次有效地环绕到数组的开头,而不是越过数组的结尾。只需将其更改为 alphabet[(j+13)%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)%26]);

}

}

}
console.log(tempArr);

关于javascript - 重复字母表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48891171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com