我正在免费代码营地进行Caesars Cipher挑战。 我相信我的代码应该正常工作但我收到的错误我不明白。我得到12个红点。我相信它与null值有关。我使用the documentation,我的数组返回空字符串。我不知道为什么。
function rot13(str) {
//str = str.split('');
var arr = [];
// var regex = /[^a-zA-Z]/g;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
arr.push(String.fromCharCode(str.charCodeAt[i] += 13));
} else if(str.charCodeAt(i) >= 78 && str.charCodeAt(i) <= 90){
arr.push(String.fromCharCode(str.charCodeAt[i] -= 13));
} else if (str.charCodeAt(i) < 65){
arr.push(str[i]);
}
}
return arr.join('');
}
rot13("SERR PBQR PNZC");
答案 0 :(得分:1)
我刚才有同样的问题,我的代码是正确的,但我得到了那个红点。所以我开始测试并注意到每个数组末尾都有一个空字符串。看看下面的数组。
["F", "R", "E", "E", " ", "C", "O", "D", "E", " ", "C", "A", "M", "P", " "]
所以我只是从末尾删除了空字符串,然后它就通过了!
arr.splice(-1,1);
["F", "R", "E", "E", " ", "C", "O", "D", "E", " ", "C", "A", "M", "P"]