Javascript js。通过提示符检查数组是否具有用户指定的值

Javascript js。通过提示符检查数组是否具有用户指定的值,javascript,arrays,string,Javascript,Arrays,String,我是一名网页设计新手,现在正在CC上学习。现在我正在编写自己的js文本游戏,这是学习js的一部分。我被阵列困住了。 我有一个带有字符串的预定义数组,需要将其与用户答案进行比较,但比较并没有这样做 var myArray = ['selection 1', 'selection 2', 'selection 3', 'selection 4', 'selection 5', 'selection 6', 'selection 7', 'selection 8']; alert("t

我是一名网页设计新手,现在正在CC上学习。现在我正在编写自己的js文本游戏,这是学习js的一部分。我被阵列困住了。 我有一个带有字符串的预定义数组,需要将其与用户答案进行比较,但比较并没有这样做

    var myArray = ['selection 1', 'selection 2', 'selection 3', 'selection 4', 'selection 5', 'selection 6', 'selection 7', 'selection 8'];
    alert("text description of scene and dimensions"); 
    var dmg_start = Math.floor((Math.random() * 50) + 1); // pre-start damage dimension, will be used further
    var user = prompt("make a selection").toLowerCase();
第一个想法,如何做到:

if (user.indexOf(myArray) > 0) {
console.log(user); // or mb document.write?
} else {
var user = prompt("make a selection").toLowerCase();
}
alert(myArray + "you can choose following");
第二个想法是:

    var find = function (myArray, user) {
    for (var i = 0; i < myArray.length; i++) {
             if (myArray[i] == user) {return i;
                 }
      }
       return null;
   };
此外,我认为有可能在第一次错误数据输入后使用警报进行中断 警报(myArray+“您可以选择以下内容”); 要帮助用户做出决策,请使用“继续循环”

在某些情况下,我得到了循环的两次迭代,然后中断循环,即使在循环中用户给出了错误的(不包含在数组中)值

但两者都是无用的。你能建议哪种方法来解决这个问题

非常感谢您的关注并帮助我了解更多信息。

试试这个

var someArray = ['selection 1', 'selection 2', 'selection 3'];
var someIndex = -1;

do {
    var someUser = prompt("make a selection").toLowerCase();
    for (var i = 0; i < someArray.length; i++) {
        if (someArray[i] === someUser) {
            someIndex = i;
            break;
        }
    }

    if (someIndex > -1) {
        alert('found at index: ' + someIndex);
    } else {
        alert('not found: please try this...');
        // or something more put here
    }
}
while (someIndex === -1);
var someArray=['selection 1','selection 2','selection 3'];
var-someIndex=-1;
做{
var someUser=prompt(“进行选择”).toLowerCase();
for(var i=0;i-1){
警报('在索引处找到'+someIndex);
}否则{
警报('未找到:请尝试此…');
//或者放在这里的其他东西
}
}
而(someIndex==-1);

如果在数组的第一个位置找到用户输入,则您的条件将失败

if (user.indexOf(myArray) > 0) {

indexOf()

编辑:IST 2015年7月19日上午09:11

使用循环尝试此示例,最多尝试2次:

var fruits=['苹果','芒果','葡萄';
var-cnt=2//最大尝试
var inp;//供用户输入
var-pos;
做{
inp=prompt('Name a fruit')。toLowerCase();
pos=水果指数(inp);
如果(-1==位置)
警报(“可用水果:”+水果);

}而(--cnt)//最多尝试次数
如果
someObject[someUser]
未定义,则您的第二个示例很容易出错。如果它在浏览器中给出一个空白页,这意味着代码出错了?对所以我试着做了和你们建议的一样的部分,但得到了白页。JSHICT显示没有错误。也许,张贴你的页面,让我们看看。它太简单了,我想。所有提交的代码都链接到定义在代码开始时选择的选项,所以现在和将来都是无用的。是的,这一页是空白的,因为没有正文。在那里添加一些内容,它将显示在页面上。我也会将脚本移动到BODY元素中的最后一个标记,只是一个额外的标记。用
promot()
alert()
提示用户是不好的用户体验,通常应该避免。谢谢分享。a选择了这个循环,但请给我解释多一点var opt=['opt 1','opt 2','opt 3'];//一些选项提示(“文本”);var pos=-1;var user;//对于用户输入,执行{user=prompt('chooseanoption').toLowerCase();pos=opt.indexOf(user);}而(-1!==pos)//在阵列警报中找不到(opt+“可用选项”);user=prompt(“做出选择”).toLowerCase();如果将user=prompt放在{}下面,则无论.Arvind中的输入是什么,此循环都会在警报前第一次、警报后第二次对文本执行REQUEST。如果循环做了两次,不管输入什么,纠正数据还是错误数据,它都会停止执行。WhiteHat,HTML的主体没有问题,我只是在HTML主体中做了一个reffer,所以它可以工作,但是使用数组和迭代仍然存在一些问题。抱歉打扰你们,伙计们,但现在对我来说太有趣了)
if (user.indexOf(myArray) > 0) {
while (myArray.indexOf(user))