提问人:gojic 提问时间:5/20/2016 更新时间:5/20/2016 访问量:111
For 循环和提示
For loop and 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!");
}
}
即使您从阵列中插入一些汽车,它也不会激活第一个警报。但是当我将符号从 === 更改为 !== 时,第一个警报就会被激活。
现在我以为它是这样的:当我提出问题并且用户从我的数组中插入答案时,如果答案等于(===)我的数组(cars)第一个警报将运行,如果不是(else),那么我的第二个警报应该运行。但在这种情况下,只有我的第二个警报运行用户的答案。 我知道有可能在没有“for loop”的情况下做到这一点,但我必须尝试这种方式。 是我的代码错了,还是我的逻辑错了?
答:
你可能想看看这里。循环访问 cars 数组中的项的方式不正确。
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;
}
}
你在代码中犯了很多错误。您可能想要的是:
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中,它会给出与你的数组中的项目数量相等的弹出窗口(由于else条件) 3) 使用 cars[i] 检查数组中项目的相等性,而不是针对总数组 (cars)
评论
首先,您可以在此处定义变量: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 条消息。其中一条可能是第一条消息,其余的将是第二条消息。这可能会让用户感到困惑。
无需循环:
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!");
}
你可以使用 indexOf 方法搜索数组...
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!");
}
}
请看下面。您需要访问 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!");
}
}
评论