¿Por qué no funciona mi código al hacerlo con el método forEach?

Estoy intentando hacer el ejercicio con el método forEach y no me funciona como se espera, con el for loop sí funciona, pero quiero saber el por qué no me funciona con forEach, a ver si estoy haciendo algo mal.

Gracias

// 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
contacts.forEach(contact => {
  if (contact.firstName === name) {
    let isAProperty = contact.hasOwnProperty(prop)
    isAProperty ? contact[prop] : 'No such property'
  }
})

return 'No such contact'
// Cambia solo el código encima de esta línea
}

lookUpProfile("Akira", "likes");
  **Información de tu navegador:**

El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Desafío: Búsqueda de perfiles

Enlaza al desafío:

Hola! Bienvenido a la comunidad :partying_face:!

El problema que veo es que siempre devuelves ‘No such contact’, por lo tanto no va a funcionar correctamente ya que debes devolver tres valores distintos dependiendo de los parámetros que reciba la función.

Puede haber un solo return pero debe devolver un valor variable.

Gracias por a bienvenida.

Si se fija bien puede notar que sí estoy devolviendo los valores esperados

isAProperty ? contact[prop] : ‘No such property’ <= acá estoy devolviendo el valor de la propiedad si el nombre es el nombre de pila del contacto y si la propiedad pasada en prop es una propiedad en ese contacto, de no ser así devuelvo ‘No such property’ si isAProperty fuese falso

Siempre estás devolviendo No such contact, pues no hay más que un único return, y si no hay otro nunca devolverás nada más.

let isAProperty = contact.hasOwnProperty(prop)
    isAProperty ? contact[prop] : 'No such property'

Este código solo asigna el resultado a la variable isProperty, pero luego no haces nada con esta variable :slight_smile:.

Mira lo que hace el script aquí.

Que confundido iba por la vida, muchas gracias por el aporte, estoy intentando solucionarlo :no_mouth:

1 Like

No hay problema :slight_smile:! Ánimo!

Y si tienes más problemas nos avisas,

Happy coding!