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

190
Views
Estructura de datos JS para el almacenamiento en caché de O(1) al verificar las claves de caché por valor

Quiero crear un caché donde tengo búsquedas O(1) de su contenido, y busco claves por valor, no por referencia. ¿Qué estructura de datos en JS, si hay alguna, me permitiría lograr esto?

Requisitos:

  1. Las claves representan una matriz de variables JS válidas (primitivas u objetos).
  2. La comparación se maneja por valor , no por referencia. (Si fuera una referencia, podríamos usar un solo Mapa)

Lo que he probado :

Estaba pensando en Mapas anidados siguiendo esta estructura:

 const resultKey = new Symbol('result'); // Create a unique result key, so we don't accidentally return if a key happens to be called 'result'. // Cache is nested maps, not objects. const cache = { [key1]: { [key2]: { [key3]: { [resultKey]: 1234 } } } } const foo = function cachedFunc(key1, key2, key3); // If these keys match values in the cache, just return the cache value.

Y esto funcionaría bien para las búsquedas de O(1) por referencia , pero por valor aún necesitaría iterar las claves en cada nivel y hacer una verificación de igualdad profunda.

¿Alguna idea de cómo puedo obtener una búsqueda de O (1) por valor?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

parece que las estructuras de datos más adecuadas para su tarea son HashMap y Set (basado en HashMap). El tiempo promedio para insertar y obtener es O(1) https://adrianmejia.com/data-structures-time-complexity-for-beginners-arrays-hashmaps-linked-lists-stacks-queues-tutorial

about 4 years ago · Juan Pablo Isaza Report

0

¿Le gustaría probar la serialización con hash junto con su valor? Quiero decir, algo como:

 const cache = { [key1]: { [key2]: { [key3]: { [resultValue]: { a: 5, b: 6 }, [resultHash]: md5(JSON.stringify(val)) } } } }

Los navegadores no tienen ninguna API de funciones hash incorporada. Entonces, obténgalo de npmjs.org


ACTUALIZAR:

Puede que haya entendido mal tu pregunta. ¿Qué pasa con esta implementación?

 const cache = new Map() const hash = data => btoa(JSON.stringify(data)) const hashKeys = (...keys) => keys.map(key => hash(key)).join('-') const store = (data, ...keys) => cache[hashKeys(...keys)] = data const load = (...keys) => cache[hashKeys(...keys)]
about 4 years ago · Juan Pablo Isaza 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!