2015-07-03 7 views
0

Im пытается запросить пользователя до тех пор, пока вход не будет равен одному из элементов массива?Как выполнить запрос до тех пор, пока не будет выполнено условие?

do { 
     var bestCities = ["miami","sanfrancisco","austin","chicago","phoenix"] 
     var userInput = prompt('Whats your city?'); 
    } while (
     userInput !== bestCities[i] 
    ); 
    alert('I love ' + i + ' also'); 
+0

Вам нужно будет перебрать массив, чтобы проверить каждый элемент в нем. Где 'i' определяется в коде? –

+0

Ваш вопрос - не вопрос. Ты пытаешься. ОК. И что? – zerkms

ответ

0

Вот лучше архитектура:

var validCity = false; 

while(!validCity) { 
    var input = prompt("What is your city"); 
    if(bestCities.indexOf(input) != -1) validCity = true; 
} 
+0

Вы можете просто «разбить» без дополнительной переменной – zerkms

+0

в стороне от семантики, основная идея, о которой я думаю, передается. –

1

Может быть:

var bestCities = ["miami","sanfrancisco","austin","chicago","phoenix"]; 
 
var userInput; 
 

 
do{ 
 
    userInput = prompt('Whats your city?') 
 
} while (bestCities.indexOf(userInput) === -1); 
 

 
alert('I love ' + userInput + ' also')

indexOf() возвращает позицию из массива.

indexOf возвращает -1, когда совпадений не найдено. Таким образом, цикл заканчивается, когда он находит индекс, отличный от -1. Например, miami находится в положении 0 и chicago в положении 3.

+0

спасибо большое, это было очень полезно !! – user3255847

+0

Коррекция в 'while condition' должна быть' bestCities.indexOf (userInput) === -1', цикл будет продолжать работать, когда индекс '-1', но все равно не найдет никаких элементов. Вы можете протестировать нажатие кнопки «Выполнить код кода» –

0
do { 
     var bestCities = ["miami","sanfrancisco","austin","chicago","phoenix"] 
     var userInput = prompt('Whats your city?'); 
    } 
while (bestCities.indexOf(userInput)==-1); 
alert('I love ' + userInput + ' also'); 

Просто проверка индекса массива будет делать трюк

Смежные вопросы