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

124
Vistas
Cómo ordenar la matriz de mapas de matrices en función de los valores en Javascript

Tengo información que ingresa como un Mapa en Javascript.

Quiero ordenarlo según los tipos que he establecido como una enumeración.

Los datos se ven así:

Mapa(5)

 {"Adopted" => 105, "Pending" => 176, "Missing" => 3, "InterestedParties" => 45, "WaitingForPickup" => 15}

Aunque puede tener más sentido cuando se ve de esta manera:

 new Map<string, number>([ ['Adopted', 105], ['Pending', 176], ['Missing', 3], ['InterestedParties', 45], ['WaitingForPickup', 15], ]);

Quiero clasificar estos datos en categorías como "animales no adoptados", "animales domiciliados", "Estado desconocido", así que hice un grupo de datos que se asignan a tipos de enumeración (por lo que AnimalStatusType.Pending es "Pendiente")

 const metricGroups = { unAdopted: [ AnimalStatusType.Pending, AnimalStatusType.InterestedParties, ], adopted: [ AnimalStatusType.Adopted, ], unknown: [ AnimalStatusType.Missing, AnimalStatusType.WaitingForPickup ], }

Quiero terminar con mi Mapa ordenado por las tres categorías diferentes adoptadas, no adoptadas y desconocidas para que se vea así:

 { adopted: [['adopted', 105]], unadopted: [['pending', 176],['interestedParties', 45]], unknown: [ ['missing', 3],['waitingForPickup', 15]], }

pero tengo un poco de dificultad para encontrar algo que haga el mapeo correctamente. Creo que tal vez combinar Array.from o una funcionalidad de reducción puede funcionar, pero la búsqueda en su mayoría muestra la funcionalidad .map de Javascript que no está ayudando.

 const GroupedData = Array.from(animalData).reduce((acc, metric) => { acc[metricGroups[metric]].push(metric) })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Simplemente podría reducir su objeto metricGroups y asignar los valores de enumeración al par clave-valor apropiado en el input .

Tenga en cuenta que no puede ordenar las claves de un objeto.

 const AnimalStatusType = { Adopted: 'adopted', InterestedParties: 'interestedParties', Missing: 'missing', Pending: 'pending', WaitingForPickup: 'waitingForPickup' }; const metricGroups = { unAdopted: [ AnimalStatusType.Pending, AnimalStatusType.InterestedParties, ], adopted: [ AnimalStatusType.Adopted, ], unknown: [ AnimalStatusType.Missing, AnimalStatusType.WaitingForPickup ], }; const input = { 'Adopted': 105, 'Pending': 176, 'Missing': 3, 'InterestedParties': 45, 'WaitingForPickup': 15 }; const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1); const result = Object.entries(metricGroups) .reduce((acc, [key, value]) => ({ ...acc, [key]: value.map(v => [v, input[capitalize(v)]]) }), {}); console.log(result);
 .as-console-wrapper { top: 0; max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede hacer esto con map y Object.entries / Object.fromEntries

 const input = new Map([ ['Adopted', 105], ['Pending', 176], ['Missing', 3], ['InterestedParties', 45], ['WaitingForPickup', 15], ]); const metricGroups = { unAdopted: [ "Pending", "InterestedParties", ], adopted: [ "Adopted", ], unknown: [ "Missing", "WaitingForPickup" ], } const result = Object.fromEntries(Object.entries(metricGroups).map(([key, values]) => { return [ key, values.map(value => ([value, input.get(value)])) ] })); console.log(result);

about 4 years ago · Juan Pablo Isaza 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