Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda