#javascript #react-native
Вопрос:
у меня есть небольшая проблема, которую я на самом деле не вижу, как решить: я пытаюсь создать for
цикл, чтобы проверить, совпадает ли буква, на которую был нажат, с буквой из моего слова (приложение «Виселица»). Идея состоит в том, чтобы проверить каждую букву и проверить, угадана ли она.
Я знаю, что могу сделать это с .filter()
помощью метода, но моя задача-сделать это с помощью цикла for.
Теперь проблема в том, что, поскольку If
утверждение становится истинным, как только вы вводите первую правильную букву, оно повторяется и устраняет все буквы.
как я могу заставить его устранить только один?
const wordGuessed = (word, guessedLetters) => {
word = word.split("");
let remaining = [...word]
for (let letter of word){
if(guessedLetters.includes(letter)){
remaining.splice(letter)
}
}
return remaining.length === 0;
};
Комментарии:
1. Вы проверили документацию
splice
? Вам нужно передать индекс в качестве аргумента.remaining.splice(letter)
это передача фактического персонажа.
Ответ №1:
Вы можете добавить индекс в код метода соединения :
const wordGuessed = (word, guessedLetters) => {
word = word.split("");
let remaining = [...word]
word.forEach((letter, index) =>
if(guessedLetters.includes(letter)){
remaining.splice(index)
}
}
return remaining.length === 0;
};
Ответ №2:
Вы неправильно используете соединение.
В любом случае, я считаю, что вы можете использовать replaceAll вместо этого, если хотите удалить все вхождения букв, найденные в строке.
remaining = remaining.replaceAll(letter, "");
или просто замените, если вы хотите удалить первое вхождение:
remaining = remaining.replace(letter, "");
Комментарии:
1. Привет, я делаю так, и это работает до одной точки: «для (пусть буква слова){ если(предполагаемые буквы.включает(букву)){ оставшийся = оставшийся.присоединиться().Заменить все(буква,»»). разделить ( «»)} » Его удаление букв из оставшихся, как планировалось, но теперь я получаю массив пустых строк.
2. зачем использовать split(» «) ?
3. Сначала я получаю ошибку «TypeError: remaining.join не является функцией» после моей первой буквы, и даже если я исправлю это, у меня будет строка только из комы
4. пожалуйста, предоставьте всю функцию
5.
const wordGuessed = (word, guessedLetters) => { word = word.split(""); let remaining = [...word] for (let letter of word){ if(guessedLetters.includes(letter)){ remaining = remaining.join().replaceAll(letter, "").split(" ") } if(remaining === ""){ return remaining = [] } console.log(remaining) } return remaining.length === 0; };