es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo recuperar los valores de datos de una matriz/objeto utilizando HOF?

¿Alguien puede ayudarme a cómo recuperar los valores de un array/objeto usando Funciones de Orden Superior?

Este es mi conjunto de datos, el bloque se repite varias veces y necesito recuperar los nombres de los residentes.

species: [
    {
      id: lionId,
      name: 'lions',
      popularity: 4,
      location: 'NE',
      availability: ['Tuesday', 'Thursday', 'Saturday', 'Sunday'],
      residents: [
        {
          name: 'Zena',
          sex: 'female',
          age: 12,
        },
     etc

He intentado el siguiente código, pero solo puedo obtener el grupo de residentes, y necesito extraer solo los nombres de los residentes.

return species.map((e) => e.residents);
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes recuperar valores de arreglos/objetos utilizando Funciones de Orden Superior en JavaScript. En este caso particular, puedes utilizar el método map() para iterar a través del arreglo species y recuperar el arreglo residents para cada entrada. Para extraer solamente la propiedad name de cada residente, puedes nuevamente utilizar el método map() en cada arreglo residents.

    Aquí hay un ejemplo de fragmento de código:

    const species = [{...}, {...}, ...]; // asumiendo que éste es todo el arreglo
    
    const residentsNames = species
      .map((e) => e.residents) // obtener el arreglo residents para cada species
      .flat() // aplanar el arreglo 2D en un arreglo 1D
      .map((resident) => resident.name); // obtener solamente la propiedad name para cada residente
    
    console.log(residentsNames); // ["Zena", ...]
    

    Nota que el método flat() es utilizado para convertir el arreglo de arreglos en un arreglo plano para hacer más fácil aplicar el segundo método map() a cada residente. Si estás ejecutando este código en un ambiente que no soporta flat(), puedes utilizar en su lugar el método reduce():

    const residentsNames = species
      .map((e) => e.residents) // obtener el arreglo residents para cada species
      .reduce((acc, cur) => acc.concat(cur), []) // aplanar el arreglo 2D en un arreglo 1D
      .map((resident) => resident.name); // obtener solamente la propiedad name para cada residente
    

Comments are closed.