Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!