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

171
Vistas
Ordenar el mapa por clave devuelve el objeto de mapa ordenado con la primera clave en el último índice

La siguiente función crea un objeto Map a partir de dos matrices. Estoy tratando de ordenar el mapa por clave en un nuevo objeto de mapa usando el método de ordenación, como se muestra en Mozilla Docs. El objeto mapSort está ordenando correctamente todas las claves, además del hecho de que está colocando la primera clave en el último índice.

 const sortMapByKey = () => { const keyArray = [4, 6, 16, 18, 2] const valueArray = [103, 123, 4444, 99, 2000] const buildMap = (keys, values) => { const map = new Map(); for(let i = 0; i < keys.length; i++){ map.set(keys[i], values[i]); }; const mapSort = new Map([...map.entries()].sort(function(a, b) { return a - b; })); return mapSort }; return buildMap(keyArray, valueArray) }

La salida actual:

 Map { 4 => '103', 6 => '123', 16 => '4444', 18 => '99', 2 => '2000' }

La salida deseada:

 Map { 2 => '2000', 4 => '103', 6 => '123', 16 => '4444', 18 => '99' }

¿Alguna pista sobre lo que estoy haciendo mal con mi tipo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Las entradas son un par clave-valor, por ejemplo, [1, 103] . Hacer return a - b intenta restar dos matrices de este tipo, lo que no tiene sentido: primero debe extraer la clave del par de entrada.

 const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) { return entryA[0] - entryB[0]; })); 

 const keyArray = [4, 6, 16, 18, 2] const valueArray = [103, 123, 4444, 2000] const buildMap = (keys, values) => { const map = new Map(); let objectArray = [] for (let i = 0; i < keys.length; i++) { map.set(keys[i], values[i]); }; const mapSort = new Map([...map.entries()].sort(function(entryA, entryB) { return entryA[0] - entryB[0]; })); return mapSort }; console.log(buildMap(keyArray, valueArray));

o desestructurar:

 const mapSort = new Map( [...map.entries()] .sort(([a], [b]) => a - b) ); 

 const keyArray = [4, 6, 16, 18, 2] const valueArray = [103, 123, 4444, 2000] const buildMap = (keys, values) => { const map = new Map(); let objectArray = [] for (let i = 0; i < keys.length; i++) { map.set(keys[i], values[i]); }; const mapSort = new Map( [...map.entries()] .sort(([a], [b]) => a - b) ); return mapSort }; console.log(buildMap(keyArray, valueArray));

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