Profile Lookup Challenge Issue

Hi All, For some reason I cant work out why my code below will not work to complete this challenge…

My thought pattern behind my code…

  1. I initiated a for loop it iterate over the contacts array i times.

  2. Ran a if statement to check if firstname === the name passed to the function.

  3. Created additional if/else statements to check for the other conditions and return the required text.

I believe the issue is that the if / else statements are the issue, but I dont know why ?

I also think that numerous if else statements are probably not the best option here…

Thanks in advance to anyone who might be able to explain to me why I am not passing this challenge.

Dan

Your code so far


// Setup
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(name, prop){
// Only change code below this line
var i = 0;
for(i=0; i < contacts.length;i++){
  
if(contacts[i]["firstName"] = name && contacts[i].hasOwnProperty(prop) === true){
        
return contacts[i][prop];
  }

else if(contacts[i]["firstName"] = name && !contacts[i].hasOwnProperty(prop)){
          
return "No such property"
  }

else if(contacts[i]["firstName"] != name){
         
return "No such contact"
}
}
// Only change code above this line
}

lookUpProfile("Kristian", "lastName");

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36.

Challenge: Profile Lookup

Link to the challenge:

two things

  • you are using assignment operators instead of comparison operators
  • if the first object in the array is not the right one your last else if is executed and the function is stopped prematurely before checking all the other elements in the array

Thanks so much for a quick reply!
DOH! on the single = signs… rookie mistake.

Ok, can you explain why this is the case? wouldnt the code iterate to the [i] on the next loop and find the correct object in the array?
Is it because the ‘return’ statements are breaking out of the for loop completely?

once a return statement is executed the function stops and give an output

so the first time that name !== contacts[i].firstName is true, the function stops

1 Like

Ok, thank you so much for your help. If else statements are obvioulsy not the correct way to solve this challenge as they will always return something to the function on the first iteration of i…