Ну, дело в том, что у Вас дело до ходит только до первого элемента массива
contacts, и в любом случае на первом же элементе происходит
return чего-либо (в данном случае "No such contact").
Можно переписать функцию
lookUp, например, таким образом:
function lookUp(firstName, prop) {
var contactExists = false;
for(var i = 0; i < contacts.length; i++)
{
contactExists |= (contacts[i].firstName === firstName);
if(contactExists && contacts[i].hasOwnProperty(prop))
return contacts[i][prop];
}
return contactExists ? "No such property" : "No such contact";
}
// Change these values to test your function
console.log(lookUp("Harry", "likes"));
Данный код (используя данные из вопроса), выводит
[ 'Hogwarts', 'Magic', 'Hagrid' ]