Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
¿Cómo transferir MAP.values a Arrays de manera eficiente?

En el siguiente ejemplo, verá una implementación ruidosa pero sencilla.

Situación inicial

Tenemos un Array inicial con información repetitiva.

 const listArray = [ { songBy: 'George Michael', uid: 'A', whatEver: 12}, { songBy: 'George Michael', uid: 'A', whatEver: 13}, { songBy: 'George Michael', uid: 'A', whatEver: 14}, { songBy: 'Michael Jackson', uid: 'B', whatEver: 12}, { songBy: 'Michael Jackson', uid: 'B', whatEver: 16}, ]

PASO 1

Creamos un nuevo Mapa porque claramente queremos guardar los nombres de los artistas, lo que significa que → no hay repeticiones de nombres de artistas (y también queremos deshacernos de la tercera columna, por cierto).

Necesitamos usar songBy como clave, por alguna razón. Lo cambiamos dentro del valor en name .

 const listMap = new Map(); listArray.forEach( row => listMap.set( row.songBy, {name: row.songBy, uid: row.uid} ) );

PASO 2

Finalmente, necesitamos una matriz con sus valores:

 const distinctListArray: Array<any> = []; listMap.forEach(value => distinctListArray.push(value));

Entonces logramos un resultado como una matriz de objetos distintos en forma de:

 [ name: string uid: string ]

Pregunta:

En mi opinión, esta implementación es demasiado ruidosa y no tan elegante. Hay demasiados pasos y demasiadas variables. (Este ejemplo aquí es una versión simplificada de un código real que no puedo compartir).

¿Hay alguna manera de simplificar ese código y hacerlo más eficiente?

EDITAR: Ver en línea: TypeScript Playground

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Convierta la lista en pares [key, value] usando Array.map() y luego cree el mapa a partir de la lista. Vuelva a convertir el Map en una matriz aplicando Array.from() al iterador Map.values() (patio de juegos de TS ):

 const listArray = [{"songBy":"George Michael","uid":"A","whatEver":12},{"songBy":"George Michael","uid":"A","whatEver":13},{"songBy":"George Michael","uid":"A","whatEver":14},{"songBy":"Michael Jackson","uid":"B","whatEver":12},{"songBy":"Michael Jackson","uid":"B","whatEver":16}] const distinctListArray = Array.from( new Map(listArray.map(({ songBy, uid }) => [songBy, { name: songBy, uid }] )).values() ) console.log(distinctListArray)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda