So I'm working on a FreeCodeCamp javascript problem. I was able to write a working function using a for loop, but when I try to write the same function with a forEach loop, it doesn't work. How can I get it to work?
First, the working function:
function lookUpProfile(name, prop){
for(var i = 0; i < contacts.length; i++){
if(name === contacts[i]["firstName"]){
if(contacts[i].hasOwnProperty(prop)){
return contacts[i][prop];
}
return "No such property";
}
}
return "No such contact";
}
The non working forEach function:
function lookUpProfile(name, prop){
contacts.forEach(function(contact){
if(name === contact["firstName"]){
if(contact.hasOwnProperty(prop)){
return contact[prop];
}
return "No such property";
}
});
return "No such contact";
}
The array that is being looped through:
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["JavaScript", "Gaming", "Foxes"]
}
];
The problem guidelines:
- We have an array of objects representing different people in our contacts lists.
- A lookUpProfile function that takes name and a property (prop) as arguments has been pre-written for you.
- The function should check if name is an actual contact's firstName
and the given property (prop) is a property of that contact. If both are true, then return the "value" of that property.
If name does not correspond to any contacts then return "No such
contact".If prop does not correspond to any valid properties of a contact
found to match name then return "No such property".