• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

119
Views
Mozilla localStorage.getItem basado en conocimiento parcial de una clave única

Estoy buscando una forma rápida de obtener un elemento del almacenamiento local de Mozilla basado en el conocimiento parcial de una clave única. Tengo la siguiente estructura definida como la clave: valor

 UUID1 : "BLABLABLA": UUID2 : Value

Donde la parte clave se ve así, por ejemplo:

 ca4417f4-f83b-11eb-bf45-ffc420139ccb:BLABLABLA:e1d26c40-f83b-11eb-81c0-fbcc16bf6bdb

El valor es solo una cadena larga.

¿Cuál sería la forma más rápida de encontrar una clave ÚNICA de localStorage basada solo en uno de los dos UUID, es decir, UUID1 o UUID2, luego obtener la cadena de clave completa y luego usar

localStorage.getItem para devolver su valor

tal vez usando Object.entries(localStorage) ?

¿Un ejemplo de código sería realmente apreciado?

almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Ampliando su concepto Object.entries() puede hacer algo como:

 // set a demo key/value localStorage.setItem('foobar', 100); const [wantedKey, wantedValue] = Object.entries(localStorage).find(([k,v])=> k.startsWith('foo')) console.log([wantedKey, wantedValue])

Trabajando jsfiddle

almost 3 years ago · Juan Pablo Isaza Report

0

La interfaz de Storage tiene una propiedad de length que le indica cuántos elementos hay y un método key que le proporciona la clave para el índice de elementos n . Entonces puede recorrer para encontrar la clave con un bucle for :

 let key; for (let n = 0, len = localStorage.length; n < len; ++n) { const thisKey = localStorage.key(n); if (thisKey.includes("BLABLABLA")) { // found it key = thisKey; break; } } if (key) { const value localStorage.getItem(key); // ... }

Tenga en cuenta que las soluciones que usan Object.keys , Object.entries , etc. no funcionarán de manera confiable con todas las claves de almacenamiento; por ejemplo, la clave "length" no funcionará correctamente, aunque está bien usar "length' como clave con getItem y setItem Eso se debe a que la interfaz de Storage ya define una propiedad llamada length (la longitud de la lista de almacenamiento), por lo que no puede acceder a un elemento almacenado con la clave "length' usando localStorage.length , tiene que localStorage.getItem("length") . Object.keys y Object.entries dejarán de lado esas entradas de almacenamiento. (Aparte de que parece que hay un error extraño en Chrome alrededor de la "key" ). Lo anterior funciona de manera confiable con length , key y otras claves similares (pero en realidad la length y la key son las más problemáticas).

Sin embargo, en su caso particular , sabe que la clave no es length ni key ni ninguna de las otras cosas en Storage.prototype , por lo que podría crear una matriz de claves a través de Object.keys y usar find para encontrar la clave:

 // Read the disclaimers above const key = Object.keys(localStorage).find(key => key.includes("BLABLABLA")); if (key) { const value localStorage.getItem(key); // ... }

... o use Object.entries para crear una matriz de matrices como muestra charlietfl . Solo tenga en cuenta la advertencia.

almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error