我似乎无法理解为什么我的代码无效。我想要做的是在用户输入不在我的数组中的数据时捕获错误。
var userPrompt = prompt("Enter which car you like: ");
var cars = ["Ferrari", "Ford", "Bugatti", "Toyota", "Honda", "Jaguar"];
for (var x = 0; x < cars.length; x++) {
console.log(cars[x]);
if (cars[x] === userPrompt) {
break;
} else {
console.log("err");
break;
}
}
答案 0 :(得分:2)
我会将代码重写为:
var userPrompt=prompt("Enter which car you like: ");
var cars=["Ferrari","Ford","Bugatti","Toyota","Honda","Jaguar"];
var x = cars.indexOf(userPrompt);
答案 1 :(得分:1)
因为循环在第一次运行时退出。 break
和if
内都有else
,因此如果它们相等或不相同,则循环将不会继续。
试试这个:
console.log(cars.indexOf(userPrompt) != -1);
或者如果你真的想要一个循环:
var found = false;
for (var x=0; x < cars.length; x++) {
if (cars[x] == userPrompt) {
console.log("found!");
found = true;
break;
}
}
if (!found)
console.log("error!");
逻辑:
userPrompt
是否在cars
。答案 2 :(得分:0)
问题是你在else块中有break
个关键字,如果数组匹配中的第一个值失败,则不允许脚本搜索数组中的下一个值。您还有语法错误,因为您在if
阻止
if(cars[x]===userPrompt){
break;}{ //<-- note the opening brace
var userPrompt = prompt("Enter which car you like: ");
var cars = ["Ferrari", "Ford", "Bugatti", "Toyota", "Honda", "Jaguar"];
for (var x = 0; x < cars.length; x++) {
if (cars[x] === userPrompt) {
break;
} //{// syntax error
else {
console.log("err");
//break; //halts further search
}
}
alert(x === cars.length ? 'No match found !' : 'Match found');
&#13;
答案 3 :(得分:0)
不需要for循环。您可以将代码更新为以下
if(cars.indexOf(userPrompt) !== -1){
// your code
} else {
console.log("err");
}
答案 4 :(得分:0)
使用当前逻辑,只会比较数组中的一个(第一个)值,如果找不到匹配,则会打印错误。
它在else语句中的原因是,你的else语句是循环的,如果找不到匹配,它将进入else部分。这就是if-else的工作原理。
而是尝试下面的代码。我添加了一个标志来检查是否找到匹配。
var userPrompt=prompt("Enter which car you like: ");
var cars=["Ferrari","Ford","Bugatti","Toyota","Honda","Jaguar"];
var isMatchFound = false;
for(var x=0; x<cars.length; x++) {
console.log(cars[x]);
if(cars[x]===userPrompt){
isMatchFound = true;
break;
}
}
if(!isMatchFound)
console.log("Match not found!");
答案 5 :(得分:0)
尝试跟随循环中断第一次自己找不到汽车
var userPrompt=prompt("Enter which car you like: ");
var cars=["Ferrari","Ford","Bugatti","Toyota","Honda","Jaguar"];
var carFound = false;
for(var x=0; x<cars.length; x++){
console.log(cars[x]);
if(cars[x]===userPrompt){
carFound = true;
break;
}
}
if(!carFound){
console.log('err');
}