首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >indexOf返回一个单词的第一个字母为1

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

Stack Overflow用户
提问于 2015-02-28 16:38:26
回答 2查看 384关注 0票数 0

我想做个简单的绞刑游戏。我将单词记录到控制台上,应该猜到什么(这将在游戏结束时删除)。现在我试着让玩家猜测字母是否在单词中,如果是的话,应该会显示出来。

但我的问题是:我使用indexOf()。单词的第一个字母是-1,而不是0,单词中没有的字母是-1。所以我不能真正检查它是否可用,因为第一个字母总是返回-1。我加了一个截图让它更清晰一点。

注意'H‘是单词的第一个字母: Hond。以及alertbox怎么说它的指数是-1。

这是我使用的函数:

代码语言:javascript
运行
复制
function guessLetter(letter){
    var letterVal = letter.value;

    alert(rand.indexOf(letterVal));
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-28 16:41:35

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

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

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

代码语言:javascript
运行
复制
alert(rand.toLowerCase().indexOf(letterVal.toLowerCase()) > -1
   ? "It's there"
   : "It's not there");

为了揭示猜到的字母,indexOf似乎并不是正确的工具。最好像……那样使用一些东西。

代码语言:javascript
运行
复制
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);
}
票数 3
EN

Stack Overflow用户

发布于 2015-02-28 16:44:25

如果您的搜索区分大小写,则在“Hond”中没有“h”。点击“o”显示什么?它应该显示1。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28784127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档