2016-07-11 133 views
0

我停留在freecodecamp Profile Lookup這一挑戰,這裏是我的代碼,我不明白爲什麼我的循環沒有運行,它會檢查只有第一元件觸點[0],爲什麼我沒有增加?爲什麼我的循環不運行

function lookUpProfile(firstName, prop){ 

for(var i=0;i<contacts.length;i++){ 
    if(contacts[i].firstName===firstName && contacts[i].hasOwnProperty(prop)){ 
     return contacts[i][prop]; 
    } 
    else if(contacts[i].firstName !== firstName){ 
     return "No such contact"; 
    } 
    else if (contacts[i].prop!==prop){ 
     return "No such property"; 
    } 


    } 


} 
+5

您正在從函數返回。一旦你點擊一個'return'語句,該函數就完成了。你期望會發生什麼? –

+0

你返回,如果1)第一個名稱匹配和對象具有特定屬性2)如果第一個名字值不一定匹配; 3)如果對象的'prop'屬性不等於'prop'值。聽起來像它幾乎肯定會返回第一個對象。 –

+0

它也看起來像你的「如果」邏輯不起作用。它總是會返回第一個真正的「if」語句。 – jordaniac89

回答

1

您需要刪除else條件,因爲如果數組中的第一個聯繫人與名字不匹配,它將始終返回。

function lookUpProfile(firstName, prop) { 
    for (var i = 0; i < contacts.length; i++) { 
    if (contacts[i].firstName === firstName) { 
     if (contacts[i].hasOwnProperty(prop)) 
     return contacts[i][prop]; 
     else 
     return "Contact found but the property " + prop + " does not exist."; 
    } 
    } 
    return "No contact found."; 
} 
0

它應該是更多的東西是這樣的:

function lookUpProfile(firstName, prop){ 

    for(var i=0;i<contacts.length;i++){ 
     if(contacts[i].firstName===firstName && contacts[i].hasOwnProperty(prop)){ 
     return contacts[i][prop]; 
     } 
    } 

    return "No such contact and property"; 
} 

否則你在第一循環結束後返回不管。這樣該方法將循環遍歷每條記錄,並且只有在不匹配時才返回錯誤消息。