簡體   English   中英

為什么這給我一個錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM