2016-07-11 4 views
0

Я застрял в этом вызове в freecodecamp Profile Lookup и вот мой код, я не понимаю, почему мой цикл не работает, он проверяет только первые контакты с элементами [0], почему i не увеличивается?Почему моя петля не запускается

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

Похоже, что ваша логика «если» не сработает. Он всегда будет возвращаться к первому истинному утверждению «если». – 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"; 
} 

В противном случае вы не возвращаются после первого цикла, независимо от того, что. Таким образом, метод будет проходить через каждую запись и возвращать только сообщение об ошибке, если оно не соответствует.

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