indexOf为单词的第一个字母返回-1

时间:2015-02-28 16:38:27

标签: javascript indexof

我试图做一个简单的刽子手游戏。 我将这个词记录到控制台应该猜到什么(这将在游戏结束时删除。) 现在我试图让玩家猜测字母是否在字中,如果是,它应该显示出来。

但我的问题是:我使用indexOf()。 这个词的第一个字母是-1而不是0, 字母中没有的字母也是-1。 所以我无法确定它是否是可用的字母,因为第一个字母总是返回-1。我添加了一个截图,使其更加清晰。

Screenshot

注意' H'是这个词的第一个字母:Hond。 以及警报框如何表示其指数为-1。

这是我使用的功能:

function guessLetter(letter){
    var letterVal = letter.value;

    alert(rand.indexOf(letterVal));
}

rand是用于存储随机单词的变量。

2 个答案:

答案 0 :(得分:3)

  

单词的第一个字母是-1而不是0

没有。该单词的第一个字母由索引0表示。如果indexOf在字符串h中找不到字母Hond,则原因不同:它使用区分大小写的比较。在这种情况下产生-1,这是正确的结果。

对于不区分大小写的搜索,只需确保所有字母都具有相同的大小写:

alert(rand.toLowerCase().indexOf(letterVal.toLowerCase()) > -1
   ? "It's there"
   : "It's not there");

要显示猜到的字母,indexOf无论如何似乎都不是正确的工具。

更好地使用某些东西
var rand = "Hond";

var guesses = [];
for ( /* every guess */ ) {
    guesses.push(guess.toLowerCase());
    var revealed = "";
    for (var i=0; i<rand.length; i++)
        if (guesses.indexOf(rand[i].toLowerCase() > -1)
            revealed += rand[i];
        else
            revealed += "_";
    }
    show(revealed);
}

答案 1 :(得分:0)

如果您的搜索区分大小写,则没有&#39; h&#39;在&#39; Hond&#39;。什么点击&#39; o&#39;节目?它应该显示1。

尝试将单词转换为大写或小写,然后进行比较。