2011-11-27 125 views
3

我正在嘗試完成這項任務,我已經設置了代碼,但是出現了一個問題。JavaScript循環訪問數組

分配: 「創建七個字符串值的數組,初始化爲這些明星的名字:寶來, 畢宿五,天津四,織女星,牛郎星,天樞,和軒轅十四與創建一個數組另外七個 字符串值,初始化爲星號爲 的星座名稱:大熊座,金牛座,天鵝座,天琴座,天鷹座,大熊座和獅子座。接下來,創建一個接受單個字符串參數的函數 。函數,通過第一個數組遍歷 ,搜索星號,當找到星號時,返回第二個數組中該索引號中包含的值 。 r字,返回星號爲 的星座。使用提示從訪問者收集星號的名稱,然後用該輸入調用該函數。不要忘記包含代碼 ,該代碼在未找到恆星時執行。顯示結果在屏幕上「

代碼

var stars = ["Polaris", "Aldebaran", "Deneb", "Vega", "Altair", "Dubhe", "Regulus"]; 
var stars2 = ["Ursa Minor", "Taurus", "Cygnus", "Lyra", "Aquila", "Ursa Major", "Leo"]; 

function processStar(starName){ 
    for (var i=0; i < stars.length; i++) { 
     if(starName == stars[i]){ 
      return stars2[i]; 
     } else { 
      return "No star found!"; 
     } 
    } 
} 

var getStar = prompt("Input the star name."); 
var result = processStar(getStar); 
alert(result); 

問題

此代碼的工作只爲明星數組中的第一個值比其他任何事情。該數組的第一個元素(「Polaris」),函數返回false值。

+0

爲什麼你有'else'? – SLaks

+0

要將恆星映射到其星座,關聯數組更有意義。 –

回答

5

您的條件聲明是錯誤的。嘗試一下。

var stars = ["Polaris", "Aldebaran", "Deneb", "Vega", "Altair", "Dubhe", "Regulus"]; 
var stars2 = ["Ursa Minor", "Taurus", "Cygnus", "Lyra", "Aquila", "Ursa Major", "Leo"]; 

function processStar(starName){ 
    for (var i=0; i < stars.length; i++) { 
    if(starName == stars[i]){ 
     return stars2[i]; 
    } 
} 

return "No star found!"; 

} 

var getStar = prompt("Input the star name."); 
var result = processStar(getStar); 
alert(result); 
5

在你的循環體內,你總是返回一個值,所以循環體只會執行一次。

+0

非常感謝!我現在明白了。 – Rafay