Javascript js。通过提示符检查数组是否具有用户指定的值
我是一名网页设计新手,现在正在CC上学习。现在我正在编写自己的js文本游戏,这是学习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
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))