当前位置: 代码迷 >> JavaScript >> JS。 检查数组是否具有用户指定的值通过提示
  详细解决方案

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

热度:9   发布时间:2023-06-12 14:20:41.0

我是网页设计的新手,刚刚在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;
   };

第三个想法是:

do
{
    var user = prompt("make a selection").toLowerCase();
}
while (myArray.indexOf(user); // in idea, here must be checking for existence user given value in array
alert(myArray + "you can choose following");

另外,我认为可以在第一次错误数据输入后使用警报提醒(myArray +“你可以选择跟随”); 帮助用户做出决定,然后使用continue循环。

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

但两者都没用。 你能建议哪种方式来解决这个问题?

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

试试这个...

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);

如果在阵列中的第一个位置找到用户输入,则您的条件将失败。

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

while (myArray.indexOf(user))

如果没有找到,则indexOf()给出-1 >= 0

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

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

 var fruits = ['apple', 'mangoe', 'grape']; var cnt = 2; //max attempt var inp; // for user input var pos; do { inp = prompt('Name a fruit').toLowerCase(); pos = fruits.indexOf(inp); if (-1 === pos) alert('Fruits available: ' + fruits); } while (--cnt); //upto max attempts 

  相关解决方案