Javascript 重复字母表

Javascript 重复字母表,javascript,arrays,loops,logic,Javascript,Arrays,Loops,Logic,我是一个初学者程序员,我知道这可能是一个简单的问题,我很难理解逻辑。 我在做一个程序,用ROT13密码破译凯撒的密码。这是FreeCodeCamp的任务之一。但他们的解决方案在我的技术水平上很难理解,所以我想用我自己的方式。我设法走得很远,但偶然发现了一个问题。我正在处理数组,我将返回带有解密消息的数组。这种情况下的输出应该是[F,R,E,E,C,O,D,E,C,A,M,P],但我得到的是[undefined,“R”,undefined,undefined,undefined,undefined

我是一个初学者程序员,我知道这可能是一个简单的问题,我很难理解逻辑。 我在做一个程序,用ROT13密码破译凯撒的密码。这是FreeCodeCamp的任务之一。但他们的解决方案在我的技术水平上很难理解,所以我想用我自己的方式。我设法走得很远,但偶然发现了一个问题。我正在处理数组,我将返回带有解密消息的数组。这种情况下的输出应该是[F,R,E,E,C,O,D,E,C,A,M,P],但我得到的是[undefined,“R”,undefined,undefined,undefined,undefined,“O”,undefined,undefined,undefined,undefined,undefined,“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);
let str=“SERR PBQR PNZC”;
设strArr=str.split(“”);
让字母表=[];
设tempArr=[];

for(i=65;i
字母[j+13]
通常是未定义的,因为每当
j>=13
时,
j+13
就超过了字母表的末尾。您可以使用有效地再次环绕到数组的开头,而不是超过它的结尾。只需将其更改为
字母表[(j+13)%26]

let str=“SERR PBQR PNZC”;
设strArr=str.split(“”);
让字母表=[];
设tempArr=[];

对于(i=65;i一个没有
var
关键字声明的变量是全局变量。全局变量可以被任何东西访问。
i
是全局变量只是想说,这是一个理想的StackOverflow问题应该看起来的样子。您试图自己解决它,非常清楚地描述了问题,提供了您的代码和示例数据ta…干得好!@geoorg谢谢!听到这个消息真是太好了。对于一个困在简单问题上的初学者来说,在StackOverflow上发帖的整个策略似乎很吓人。我很高兴我做得对。这很有效。但我仍然不明白为什么。你能解释一下我们刚才用%26做了什么吗?另外,我还想包括空格n我的数组。它们似乎是随我的代码一起删除的。@Urrby这是一个练习,所以我想对您的代码进行最小的更改,而不是仅仅给出空格的解决方案。不过,我会给您一个提示,使用if语句检测当前字符是否是空格,然后将空格推到
tempArr
%26
只取除26的余数。假设
j=20
。那么
j+13
33
,它超过了字母表数组的末尾,所以没有定义,但是
33%26
7
,所以你有效地回到了字母表的开头,而不是超过了e的结尾所有东西都是未定义的。我在阅读你的评论之前就这么做了,而且效果很好。但是出于某种原因,我得到的输出空间超过了1个。在你的更改之后,我写了这样一句话:if(strArr[I]==“”){tempArr.push(“”;)。谢谢你对%26的解释。我现在明白了。我想用
%alphabet.length
代替神奇的数字
%26