2

¿Cómo obtener una colección de valores a partir de una colección de objetos con Javascript?

En el presente tutorial vamos a ver como utilizar la función reduce de Javascript, pero no para obtener un valor, sino un arreglo que tenga almacenado algún atributo que nos interese de una colección de objetos.
Suena un poco trabalenguas, pero lo voy a poner como un ejemplo: si yo tengo una colección de películas, voy a obtener un arreglo que tenga únicamente los títulos de estas películas.
Sin más por decir, empecemos:

Tengo una colección de películas:

Let películas = [{titulo: La mujer Maravilla, año: 2017, director: Pepito Perez}, {titulo: Otra película nice, año: 2018, director: Juanito Ortiz}, {titulo: Una tercer película Cool, año: 2019, director: Benito Bunny }]

Para guardar en un arreglo solamente los nombres de las películas, voy a usar la función reduce, si aun no la conoces, es importante que primero veas la clase relacionada.

  1. Recuerda que la función reduce necesita de una función auxiliar, la cual describo a continuación
    let funcionAuxiliar = (acum,pelicula) => { acum.push(película,titulo); return acum; }

Básicamente la función auxiliar introduce el título en un arreglo que se va acumulando y devuelve ese arreglo para que las películas posteriores introduzcan sus títulos.
Lo que yo busco es esto:

arreglo = [‘La Mujer Maravilla’] //Agrego la primera película arreglo = [‘La Mujer Maravilla’, ‘Otra película nice’] //Agrego la segunda película arreglo = [‘La Mujer Maravilla’, ‘Una tercer película Cool] //Agrego la tercer pelicula

  1. Ahora implemento la función reduce para obtener el arreglo deseado

let arregloDeseado = películas.reduce(funcionAuxiliar,[])

En este punto, el valor inicial es un arreglo vacío “ [ ] ”. Si todo sale bien, al enviar a consola la variable arregloDeseado obtendremos un arreglo con los valores

[‘La Mujer Maravilla’, ‘Otra película nice’, ‘Una tercer película Cool]

De esta manera, la función reduce no solamente se utiliza para obtener valores acumulados, sino en general, para extraer elementos de los arreglos.
Espero te haya gustado este corto tutorial, que en lo personal me ha sido muy útil y me ha ahorrado muchas líneas de código.

Escribe tu comentario
+ 2
1
3336Puntos
5 años

En ese caso optaría por el equivalente con map:

peliculas.map( item => item.titulo);

Pero reduce también es muy útil para obtener un objeto…

peliculas.reduce( (acc, {titulo, año}) =>
   (acc[titulo] = año) && acc, {} ); 

/* resultado:
{
“La mujer Maravilla”: “2017”,
“Otra película nice”: “2018”,
“Una tercer película Cool”: “2019”
}
*/