根据用户输入的警报显示数组等级
问题描述:
我正在编写一个程序,允许用户只能查看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>')
}
}