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

143
Vistas
Eliminar la entrada más antigua en Map () con complejidad de tiempo O (1) JS

Si queremos mantener el tamaño fijo de un mapa: 3 entradas y eliminar la entrada tocada más antigua, cuando se crea una nueva, ¿cómo lo hacemos con un tiempo constante? (Me dijeron que es posible)

Si hacemos tales operaciones:

 let cache = new Map() cache.set('one', 1); cache.set('two', 2); cache.set('three', 3); cache.set('two', 'two'); cache.set('four', 4);

Esperaría que el mapa sea:

 { ['three', 3], ['two', 'two'], ['four', 4], }

Solo puedo pensar en tener una solución O (n) para la invalidación, pero anula todo el propósito del caché.

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

0

Los mapas se iteran en el orden en que se crearon las claves. Entonces puedes usar eso para hacer

 const cache = new Map(); const keysIter = cache.keys(); function set(key, value) { cache.set(key, value); if (cache.size > 3) { cache.delete(keysIter.next().value); } }

Sin embargo, si por "tocado más antiguo" desea referirse a las actualizaciones, no solo a la creación (por ejemplo, en su ejemplo, cache.set('five', 5) expulsaría ['three', 3] no ['two', 'two'] ), deberá realizar un seguimiento de estos toques usted mismo, por ejemplo, en un búfer circular. O tal vez simplemente llame a cache.delete(key) cada vez antes de "actualizar", de modo que cache.set(key, value) siempre cree una nueva entrada al final.

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