使用 for 循环 JS 过滤

时间:2021-05-06 12:08:41

标签: javascript react-native

我有一个小问题,我真的不知道如何解决: 我试图创建一个 for 循环来检查点击的字母是否与我的单词(Hang-man 应用程序)中的字母匹配。 这个想法是检查每个字母并检查它是否被猜到了。

我知道我可以用 .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;
};

2 个答案:

答案 0 :(得分:0)

您可以在拼接方法代码中添加索引:

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

答案 1 :(得分:0)

您使用了错误的拼接方式。

无论如何,如果您想删除字符串中出现的所有字母,我相信您可以使用 replaceAll 代替。

remaining = remaining.replaceAll(letter, "");

或者只是替换,如果你想删除第一次出现:

remaining = remaining.replace(letter, "");