2016-07-11 20 views
0

私はこの問題をFreecodecamp Profile Lookupで抱えています。ここに私のコードがあります。なぜ私のループが動作していないのか分かりません。私は増分しませんか?なぜ私のループが実行されないのですか

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"ロジックが動作しないようにも見えます。常に最初の真の "if"ステートメントに戻ります。 – jordaniac89

答えて

1

配列内の最初の連絡先がファーストネームと一致しない場合は常に返されるように、else if条件を削除する必要があります。

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"; 
} 

そうでない場合は、あなたがどんな最初のループの後に戻っていません。この方法では、メソッドはすべてのレコードをループし、一致しない場合にのみエラーメッセージを返します。

関連する問題