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

时间:2015-07-17 11:14:45

标签: javascript arrays string

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

import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 * java.util.date to java.sql.date
 */
public class DatesConversion {

    public static void main(String[] args) {
        java.util.Date uDate = new java.util.Date();
        System.out.println("Time in java.util.Date is : " + uDate);
        java.sql.Date sDate = convertUtilToSql(uDate);
        System.out.println("Time in java.sql.Date is : " + sDate);
        DateFormat df = new SimpleDateFormat("dd/MM/YYYY - hh:mm:ss");
        System.out.println("Using a dateFormat date is : " + df.format(uDate));
    }

    private static java.sql.Date convertUtilToSql(java.util.Date uDate) {
        java.sql.Date sDate = new java.sql.Date(uDate.getTime());
        return sDate;
    }
}

第一个想法,怎么做:

    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 +“你可以选择以下”); 帮助用户做出决定,然后使用continue循环。

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

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

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

2 个答案:

答案 0 :(得分:0)

试试这个......

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

答案 1 :(得分:0)

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

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