let lettersOfTheWord =['F','O','X',"X"];
let guessedLetters = [];
let generateUnderScore = function(word){
for (let i =0; i<word.length; i ){
guessedLetters.push("_");
}
//console.log(guessedLetters.toString());
return guessedLetters;
} //to generate underscore.
generateUnderScore(lettersOfTheWord);
let guessLetter =function(letter){
for (let i=0; i<lettersOfTheWord.length;i ){
if (letter===lettersOfTheWord[i]){
let index=lettersOfTheWord.indexOf(letter);
guessedLetters[index]=letter;
console.log(guessedLetters);
}
}
console.log("You entered:" letter);
console.log(`The current guessed letters: ${guessedLetters.toString()}`);
console.log("Congradulations! You found a new letter.")
}
guessLetter("F");
guessLetter("O");
guessLetter("X");
guessLetter("X");
這就是我的代碼的樣子,對于最后一個函式呼叫guessLetter("X"),我希望輸出類似于:
You entered:X
The current guessed letters: F,O,X,X
Congratulations! You found a new letter.
然而,它最終是:
You entered:X
The current guessed letters: F,O,X,_
Congratulations! You found a new letter.
我注意到字母“X”的副本沒有被替換,但我該如何解決這個問題?太感謝了!
uj5u.com熱心網友回復:
您的問題:
當您嘗試查找"X"from的索引時lettersOfTheWord,它將始終回傳2in 的第一次"X"出現lettersOfTheWord
解決您的問題。
Array.prototype.indexOf()接受fromIndex作為可選引數。您可以將執行的索參考作fromIndex.
你的固定小提琴
let lettersOfTheWord = ['F', 'O', 'X', "X"];
let guessedLetters = [];
let executionIndex = 0;
let generateUnderScore = function (word) {
for (let i = 0; i < word.length; i ) {
guessedLetters.push("_");
}
//console.log(guessedLetters.toString());
return guessedLetters;
} //to generate underscore.
generateUnderScore(lettersOfTheWord);
let guessLetter = function (letter) {
for (let i = 0; i < lettersOfTheWord.length; i ) {
if (letter === lettersOfTheWord[i]) {
let index = lettersOfTheWord.indexOf(letter, executionIndex);
guessedLetters[index] = letter;
// console.log(guessedLetters);
}
}
console.log("You entered:" letter);
console.log(`The current guessed letters: ${guessedLetters.toString()}`);
console.log("Congradulations! You found a new letter.");
executionIndex ;
}
guessLetter("F");
guessLetter("O");
guessLetter("X");
guessLetter("X");
更好的解決方案
您可以guessedLetters使用Array.map. For loop isirrelavent,你可以使用Array.indexOf它自己并且可以檢查找到的索引是否大于-1,這意味著元素存在于陣列中。
作業小提琴
let lettersOfTheWord = ['F', 'O', 'X', "X"];
let guessedLetters = lettersOfTheWord.map(item => '_');
let executionIndex = 0;
let guessLetter = function (letter) {
const index = lettersOfTheWord.indexOf(letter, executionIndex);
index > -1 ? guessedLetters[index] = letter : {};
console.log("You entered:" letter);
console.log(`The current guessed letters: ${guessedLetters.toString()}`);
console.log("Congradulations! You found a new letter.");
executionIndex ;
}
guessLetter("F");
guessLetter("O");
guessLetter("X");
guessLetter("X");
uj5u.com熱心網友回復:
我稍微簡化了你的代碼。
let lettersOfTheWord =['F','O','X',"X"];
let guessedLetters = lettersOfTheWord.map(()=>'_');
function guessLetter(letter){
lettersOfTheWord.forEach((_letter,i)=>{
if (letter===_letter && guessedLetters[i]==='_'){
guessedLetters[i]=letter;
console.log(guessedLetters);
console.log("You entered:" letter);
console.log(`The current guessed letters: ${guessedLetters.toString()}`);
console.log("Congradulations! You found a new letter.")
}
});
}
guessLetter("F");
guessLetter("O");
guessLetter("X");
guessLetter("X");
問題在于您if應該添加&& guessedLetters[i]==='_'到您的代碼中。然后洗掉let index=lettersOfTheWord.indexOf(letter);然后替換i而不是index
此外,您可以使用for ... in回圈。使用中斷并跳過不必要的檢查
let lettersOfTheWord =['F','O','X',"X"];
let guessedLetters = lettersOfTheWord.map(()=>'_');
function guessLetter(letter){
for(const i in lettersOfTheWord){
if (letter===lettersOfTheWord[i] && guessedLetters[i]==='_'){
guessedLetters[i]=letter;
console.log(guessedLetters);
console.log("You entered:" letter);
console.log(`The current guessed letters: ${guessedLetters.toString()}`);
console.log("Congradulations! You found a new letter.");
break;
}
}
}
guessLetter("F");
guessLetter("O");
guessLetter("X");
guessLetter("X");
尖端:
- 你可以洗掉功能
generateUnderScore - 了解更多關于 ES6 map & forEach
- 您不需要為您的
let. 只是創建function name(..) {...}我認為,這更清晰
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381495.html
標籤:javascript 数组
