2017-10-07 3 views
0

J'essaie d'écrire un programme qui permet aux utilisateurs de voir uniquement les hôtels avec 4 étoiles. Chaque fois que je lance ce code, je continue à récupérer tous les objets dans le tableau, au lieu de simplement "Hilton" et "Holiday Inn". Qu'est-ce que je fais mal? Merci. si l'article ne se trouve pasAffichage des classements de tableau en fonction de l'entrée de l'utilisateur dans l'alerte

 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]) 
    } 
    } 

Répondre

0

Il y avait quelques erreurs de syntaxe avec votre code, il ne manquait une parenthèse ici et là.

Aussi, vous devriez vérifier la condition 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]) 
 
    } 
 
}

0

Array#indexOf retours -1. Puisque -1 n'est pas une valeur falsifiée, dans if il est traduit en true, et vous obtenez tous les éléments sauf celui avec l'index 0, puisque 0 est casté en false. Changer la condition:

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

Démo:

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>') 
 
    } 
 
}