JavaScript básico - Búsqueda de perfiles

Cuéntanos qué está pasando:
Describe tu problema en detalle aquí.

what’s my mistake? :sleepy:

  **Tu código hasta el momento**
// Configuración
const 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) {
// Cambia solo el código debajo de esta línea
  for (var 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){
    return "No such contact"
  }else if (contacts[i].hasOwnProperty(prop) === false){
    return "No such property"
  }
}
}

lookUpProfile("Akira", "likes");
lookUpProfile("Kristian", "lastName")
lookUpProfile("Sherlock", "likes")
lookUpProfile("Harry", "likes")
lookUpProfile("Bob", "number")
lookUpProfile("Bob", "potato")
lookUpProfile("Akira", "address")

Cual es el link del reto para poder ver que pruebas no están pasando?

image
Tu código solo funciona cuando buscas, solo con el primer elemento de la lista (Akira)

const contacts = [
{
  firstName: "Akira",
  lastName: "Laine",
  number: "0543236543",
  likes: ["Pizza", "Coding", "Brownie Points"],
}

Como todo está dentro de un ciclo for y si buscamos por ejemplo
lookUpProfile("Kristian", "lastName")
El ciclo for iniciará buscando por el primer elemento del array “contacts”

  for (var 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){
    return "No such contact"
  }else if (contacts[i].hasOwnProperty(prop) === false){
    return "No such property"
  }
}
}

Como “Kristian” no está dentro del primer elemento de la lista, se ejecuta el código de los “else if” y ejecuta un “return” haciendo que la función deje de ejecutarse.

En pocas palabas, tu funcion solo busca dentro del primer elemento de “contacts” y se detiene la funcion.

Espero y haya sido claro en mi explicación

1 Like

Me sirvió, muchas gracias

1 Like