Profile Lookup unexpected results

Tell us what’s happening:

I am getting weird results. Using “Harry” as the firstName parameter it finds that name in the array but then returns the information for contacts[o]

Is it not iterating through the array properly or is it something else?

Your code so far

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"]

function lookUpProfile(firstName, prop){
// Only change code below this line
for (var i = 0; i < contacts.length; i += 1) {
  if (contacts[i][firstName] === contacts[firstName]) {
  return contacts[i];
} return "No such contact";
// Only change code above this line

// Change these values to test your function
lookUpProfile("Harry", "likes");

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Windows NT 10.0; rv:59.0) Gecko/20100101 Firefox/59.0.

Link to the challenge:

contacts[i] [firstName] and contacts[firstName] are both undefined, so the if block is entered and the first item in contacts is returned.

I don’t understand. I thought I could access the object properties using bracket notation:

var myObj = {
“Space Name”: “Kirk”,
“More Space”: “Spock”
myObj[“Space Name”]; // Kirk
myObj[‘More Space’]; // Spock

That is completely true. However, firstName is a variable. someObj[thing] is not the same as someObj['thing'].

Additionally, contacts is an array, not an object.

Thanks for replying. I’ll keep plugging away and see if I can figure it out.