Фильтр с использованием цикла for JS

#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; };