所以輸入是按字母順序排列的字母串。在那裏的某個地方,一封信失蹤了。我必須寄回丟失的信件。我已經在下面發佈了我的代碼。這是很好的評論,這些評論解釋比我能在這裏更好。我會在下面解釋我的問題。在字符串中查找丟失的字母Javascript
function fearNotLetter(str) {
var charCodes;
var test;
var offendingNumber;
var numToString;
// i starts at 1, increments to str.length
for (var i = 1; i < str.length; i++) {
// Char code of last letter minus char code of second last letter,
// Char code of second last letter minus char code of third last letter, etc.
// Repeat on a loop and set result equal to test each time.
test = str.charCodeAt(str.length - [i]) - str.charCodeAt(str.length - [i + 1]);
console.log(test);
// If charCode A - charCode B == 1, then letters are in order
// alphabetically and test returns 1.
// If charCode A - charCode B > 1, then letters missing from string.
// So if difference between char codes is more than 1,
// return missing char code and convert to string.
if (test > 1) {
offendingNumber = str.charCodeAt(str.length - [i]);
numToString = String.fromCharCode(offendingNumber);
console.log(numToString);
} // End of if.
// If no letters missing from input, return undefined.
else {
return undefined;
} // End of else.
} // End of loop.
} // End of function.
// Here is the input str
fearNotLetter("abce");
問題出在這裏。如果我輸入「abce」,我缺少d。 console.log(測試)返回2,我可以得到丟失的信件。大。
如果我輸入「abcef」(與以前相同的字符串加上f結尾),我仍然缺少d。測試返回1,好像說沒有字母丟失,但d仍然丟失。
我的程序只有在缺少的字符適合字符串中的第二個空格時才起作用。 「lmnp」有效,但「lmnpqrs」不起作用。
我的循環清楚地遍歷字符串中的每個字符,因爲它可以從長字符串「abcdefghijklmnopqrstuvxyz」中挑選缺少的w。當缺少字符後有多個字符時,爲什麼我的循環會崩潰?它的行爲就好像我在循環之外調用了console.log(test),並且只返回最後一次迭代。我試過把測試推向一個數組,但這並沒有幫助。
請正確縮進您的代碼以使其可讀。 – jfriend00
Amanuel Bogal編輯它。希望這是更好閱讀 – PencilCrate
@maraca「abcde」str.length = 5但str.charCodeAt從[0]到[4] – PencilCrate