2015-07-03 199 views
0

我試圖提示用戶,直到輸入等於數組中的一個元素?如何提示,直到條件滿足?

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'時,循環將繼續運行,即仍未找到任何元素。你可以測試按下「Run code snippet」按鈕 –

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

就在數組索引檢查會做的伎倆