[英]Why is this giving me an error?
為什么此代碼給我以下錯誤消息?
TypeError:對象97沒有方法'charCodeAt'
var str = "Caesar Cipher";
str = str.split("");
num = 2;
x = 0;
for (var i = 0; i < str.length; i++) {
x = 0;
while (x < num) {
if (str[i].charCodeAt(0) <= 122 && str[i].charCodeAt(0) >= 97) {
str[i] = str[i].charCodeAt()+x;
}
x++;
}
}
console.log(str);
如果有人對我的最終結果感興趣: http : //jsfiddle.net/zackarylundquist/8L9b5/
該行:
str[i] = str[i].charCodeAt()+x;
正在將數組中的元素從字符串轉換為數字。 數字沒有charCodeAt()
方法,因此為什么會出現錯誤。 使用以下內容:
str[i] = str[i].charCodeAt()+x + "";
這將使元素保持字符串,並且您仍然可以調用charCodeAt()
方法。
無濟於事,我知道它不能完全解決op的問題,但這是一個很好的凱撒實現(小提琴: http : //jsfiddle.net/z97HR/3/ ):
var str = ("CaesarCipher").toLowerCase(); // let's use only lowercase letters, no spaces
console.log(str);
var offset = 0;
var crypt = str.split("").map(function(letter){
var offsetLetter = 97 + (letter.charCodeAt(0) + offset - 97) % 26;
return String.fromCharCode(offsetLetter);
}).join("")
console.log(crypt);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.