用于循环和提示

时间:2016-05-20 14:45:55

标签: javascript for-loop command-prompt

你好我的代码中有什么问题:



var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];

for (cars = 0; cars <= 3; cars+= 3) {
  if (question === cars) {
    alert("That is a great car!");
  } else {
    alert("Nah, there is better choices!");
  }
}
&#13;
&#13;
&#13;

即使您从阵列插入一些汽车,它也不会激活第一个警报。但是当我将符号从===更改为!==然后第一个警报被激活。

现在我认为它是这样的:当我问问题并且用户从我的数组插入答案时,如果答案等于(===)我的数组(汽车)第一个警报将会运行,否则(否则)然后我的第二个警报应该运行。但在这种情况下,只有我的第二个警报运行用户的答案。 我知道,如果没有&#34; for循环&#34;可能有可能做到这一点。但我必须尝试这种方式。 我错了代码还是我的逻辑错了?

6 个答案:

答案 0 :(得分:3)

您可能需要查看here。迭代cars数组中的项目的方式不正确。

&#13;
&#13;
var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];

for (i = 0; i < cars.length; i++) {
  if (question === cars[i]) {
    alert("That is a great car!");
    break;
  } else {
    alert("Nah, there is better choices!");
    break;
  }
}
&#13;
&#13;
&#13;

答案 1 :(得分:3)

无需循环:

&#13;
&#13;
var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];


  if (cars.indexOf(question)!==-1) {
    alert("That is a great car!");
  } else {
    alert("Nah, there is better choices!");
  }
&#13;
&#13;
&#13;

您可以使用indexOf方法搜索数组...

答案 2 :(得分:2)

首先,您可以在此处定义cars变量:

var cars = ["BMW", "Volvo", "Saab", "Ford"];

但是在下一行完全将其替换为0

cars = 0

如果要存储多个内容,请使用多个变量:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
for (var i = 0; i <= 3; i += 3) {
    //...

此外,永远不会为真:

if (question === cars) {

因为cars是当前代码中的数字(0)或我的版本中的数组而question是字符串(用户的响应)。如果要与数组中的值进行比较,您可能需要这样:

if (question === cars[i]) {

除此之外,你还不清楚你在这个循环中逻辑上要做什么。它只会迭代一次,因为你立即在递增值上加3,从而终止循环(因为循环最多只有3)。因此,如果您只是尝试将其与数组中的第一个值进行比较,而该值,那么您根本不需要循环。

或者,如果 尝试遍历整个阵列,那么从逻辑上讲,您将获得4条消息。其中一个可能是第一条消息,其余的将是第二条消息。这可能会让用户感到困惑。

答案 3 :(得分:1)

你的代码犯了很多错误。您可能想要的是:

var inArray = false;
var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];

for (i = 0; i < cars.length; i++) { 
  if (question === cars[i]) {
    inArray = true;
  }
}

if(inArray){
    alert('great');
}else{
    alert('nah');
}

1)你的for循环构造错误 - 你应该循环遍历数组的长度 2)如果你把你的警报放在forloop中它会给弹出窗口等于你的数组中的项目数量(由于其他条件) 3)使用cars [i]检查数组中项目的相等性,而不是对整个数组(汽车)

答案 4 :(得分:1)

var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];

for (i = 0; i <= 3; i++) {
  if (question === cars[i]) {
    alert("That is a great car!");
  } else {
    alert("Nah, there is better choices!");
  }
}

答案 5 :(得分:1)

请看下面。您需要访问cars数组中的各个元素,并在for循环中增加1。

var question = prompt("What is your favorite cars?");
var cars = ["BMW", "Volvo", "Saab", "Ford"];

for (i= 0; i < 3; i+= 1) {
  if (cars[i] === question) {
    alert("That is a great car!");
  } else {
    alert("Nah, there is better choices!");
  }
}