Почему мой цикл не работает
Я застрял в этой задаче в 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";
}
}
}
2 ответа
Решение
Вам необходимо удалить условия 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.";
}
Это должно быть что-то вроде этого:
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";
}
В противном случае вы вернетесь после первого цикла, несмотря ни на что. Таким образом, метод будет перебирать каждую запись и возвращать сообщение об ошибке, только если оно не совпадает.