【问题标题】:Issue comparing letters in a loop循环比较字母的问题
【发布时间】:2021-01-11 02:04:13
【问题描述】:

所以...我遇到了一个奇怪的问题?我在做简单的练习游戏,你尝试猜测项目的名称。当我想在你点击它后显示正确的一个时,我遇到了奇怪的比较问题,所以......字符串的第一个字母等于同一个字母,但其余的字符串字母 - 返回未定义......

这是我的代码,也是结果/输出:

for (x = 0; x < wylosowaneSlowo.length; x++) {
  if (wylosowaneSlowo[x] == litera) {
    id_litery.push(x);
    console.log(wylosowaneSlowo[x], litera, id_litery[x]);
  }
}
  1. 字符串的第一个字符:
  2. 字符串的第二个字符:

【问题讨论】:

  • 所以你想看看字符串是否相同??或者你想看看一个字符串是否存在于另一个字符串的一部分中??
  • 因为 [x] 与 id_litery 不同,因为您不推送它.... 为什么要推送索引? console.log(id_litery);
  • @AlphaWolfGamer 我正在尝试创建刽子手游戏,所以...当有人单击该字母时,程序必须检查该字母是否存在于字符串中,如果存在 - 那么它必须签入它有多少地方,然后将其显示在正确的地方,并将这些地方标记为已点击。 (对不起我的英语不好)
  • 您能否给出输入wylosowaneSlowolitera 的完整示例(在您的问题中),以及循环完成后id_literary 中的预期输出?
  • @epascarello 哦……我真是个白痴,问题解决了……谢谢!

标签: javascript loops compare letter


【解决方案1】:

在您的代码中,您正在推送到一个数组并查看索引。因此,如果索引不匹配,则您正在查看未定义的索引。

您可能想要创建一个包含可能性的数组并更改匹配的索引。

var phrase = "Hello World";
var shown = phrase.split('').map(function (char) {
  return char.match(/[a-z]/i) ? '_' : char;
});


function guess(letter) {
  for (let i=0; i<phrase.length; i++) {
    if (phrase[i].toLowerCase() === letter.toLowerCase()) {
      shown[i] = phrase[i];
    }
  }
  console.log("guess: ", letter, " game: ", shown.join(" "));
}

guess("s");
guess("l");
guess("o");
guess("h");
guess("e");
guess("w");
guess("d");
guess("r");

【讨论】:

  • 在您发表第一条评论后我已经修复了它,但仍然 - 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2012-04-04
  • 2017-08-13
  • 1970-01-01
相关资源
最近更新 更多