根据用户输入的警报显示数组等级

问题描述:

我正在编写一个程序,允许用户只能查看4星评级的酒店。每当我运行此代码时,我都会继续获取数组中的所有对象,而不仅仅是'希尔顿'和'假日酒店'。我究竟做错了什么?谢谢。根据用户输入的警报显示数组等级

 var hotels = ['Marriot', 'Hilton', 'Double Tree', 'Holiday Inn'] 
    var visitorRating = ['0 starts', '4 stars', '1 star', '4 stars'] 

    var seeHotels = prompt("Would you like to see all of the hotels whose ratings are 4 stars?"); 
    var fourStars = e; 

    for(var e = 0; e < visitorRating.length; e++){ 
if(visitorRating[e].indexOf("4 stars")) 
    document.write(hotels[e] + ' ' + visitorRating[e]) 
    } 
    } 

有你的代码少的语法错误,它在这里和那里缺少一些paranthesis。

您也应该检查的条件visitorRating[e].indexOf("4 stars") !== -1

DEMO

var hotels = ['Marriot', 'Hilton', 'Double Tree', 'Holiday Inn']; 
 
var visitorRating = ['0 starts', '4 stars', '1 star', '4 stars']; 
 

 
var seeHotels = prompt("Would you like to see all of the hotels whose ratings are 4 stars?"); 
 
    var fourStars = e; 
 

 
for(var e = 0; e < visitorRating.length; e++){ 
 
if(visitorRating[e].indexOf("4 stars") !== -1){ 
 
    document.write(hotels[e] + ' ' + visitorRating[e]) 
 
    } 
 
}

Array#indexOf返回-1如果该项目没有找到。由于-1不是一个虚假值,所以在if中将其转换为true,并且除了索引为0的索引之外,因为0被传送到false,所以您将获得所有项目。条件更改为:

visitorRating[e].indexOf("4 stars") !== -1 

演示:

var hotels = ['Marriot', 'Hilton', 'Double Tree', 'Holiday Inn'] 
 
var visitorRating = ['0 starts', '4 stars', '1 star', '4 stars'] 
 

 
for (var e = 0; e < visitorRating.length; e++) { 
 
    if (visitorRating[e].indexOf("4 stars") !== -1) { 
 
    document.write(hotels[e] + ' ' + visitorRating[e] + '<br>') 
 
    } 
 
}