所以我正在开发freecodecamp挑战,我需要解码ceasar密码。我已经创建了一个辅助函数,它从main函数调用来解码字符串中的每个单词。我在那个二级代码中遇到问题,因为它不断给我一个错误,即设置为参数的字符串参数是未定义的,并且我无法访问长度。有人可以澄清一下发生了什么吗?
免责声明:我是新手编码,花了最后30分钟寻找这个问题的答案,我找不到。我觉得这个修复应该简单易行,如果有人发现这个问题多余,请提前道歉。
以下是代码:
function rot13(str) { // LBH QVQ VG!
var stringArray = [];
stringArray = str.split(" ");
var value = stringArray.length;
var decodedWords = [];
var iCount = 0;
while(iCount < value){
decodedWords.push(decodeWord(stringArray[i]));
iCount++;
}
return decodeWord("Confused!");
}
function decodeWord(word) {
var decodedWord = "";
for (i = 0; i < word.length; i++){
var cipherVal = word.charCodeAt(i);
var decodedVal = cipherVal;
if( cipherVal >= 97 && cipherVal <= 109 || cipherVal >= 65 && cipherVal <= 77){
decodedVal = cipherVal + 13;
}
else if(cipherVal >= 110 && cipherVal <= 122 || cipherVal >= 78 &&
cipherVal <= 90){
decodedVal = cipherVal - 13;
}
decodedWord += String.fromCharCode(decodedVal);
}
return decodedWord;
}
感谢您的任何建议!非常赞赏。
答案 0 :(得分:0)
在第一个函数中,循环内的i
应为iCount
:
var iCount = 0;
while(iCount < value) {
decodedWords.push(decodeWord(stringArray[iCount]));
iCount++;
}
decodeWord
函数抱怨word
未定义,因为您通过未定义的索引(i
)传递了stringArray的成员。如果您按定义的索引(iCount
)抓取项目,decodeWord
将收到已定义的word
,并且能够抓住其长度。
当然,您可能还希望rot13
返回输入字符串的编码版本,而不是编码版本的&#34; Confused!&#34;:
return decodedWords.join(" ");
答案 1 :(得分:0)
根据我的理解,你犯了一个错误
的 decodedWords.push(decodeWord(stringArray[i]));
强>
将其更改为
<强> decodedWords.push(decodeWord(stringArray[iCount]));
强>
希望它有效。如有任何问题,请告诉我