una tipos permanente memoria informacion guarda entre ejemplos duro dispositivos disco diferencia computadora como celular almacenamiento almacena javascript local-storage

javascript - tipos - nas wd



¿Cómo recuperar todos los elementos de almacenamiento local sin conocer las claves de antemano? (6)

La forma más fácil

devolver JSON.stringify (localStorage);

Quiero mostrar todas las claves y el almacenamiento escrito antes. Mi código está abajo. Creé una función (allStorage) pero no funciona. ¿Cómo puedo hacer esto?

function storeUserScribble(id) { var scribble = document.getElementById(''scribble'').innerHTML; localStorage.setItem(''userScribble'',scribble); } function getUserScribble() { if ( localStorage.getItem(''userScribble'')) { var scribble = localStorage.getItem(''userScribble''); } else { var scribble = ''You can scribble directly on this sticky... and I will also remember your message the next time you visit my blog!''; } document.getElementById(''scribble'').innerHTML = scribble; } function clearLocal() { localStorage.clear(); return false; } function allStorage() { var archive = []; for (var i = 0; i<localStorage.length; i++) { archive[i] = localStorage.getItem(localStorage.key(i)); } }


La forma más fácil en ES2015 + es:

const items = {...localStorage};


Si modifica su función para esto, puede enumerar todos los elementos en función de la clave (solo enumera los elementos):

function allStorage() { var values = [], keys = Object.keys(localStorage), i = keys.length; while ( i-- ) { values.push( localStorage.getItem(keys[i]) ); } return values; }

Object.keys es una nueva adición a JavaScript (ECMAScript 5). Enumera todas las claves propias de un objeto que es más rápido que usar un bucle for-in, que es la opción para esto.

Sin embargo, esto no mostrará las claves. Para eso necesita devolver un objeto en lugar de una matriz (que es más bien un IMO sin punto, ya que esto lo llevará tan lejos como antes con localStorage solo con un objeto diferente, pero por ejemplo):

function allStorage() { var archive = {}, // Notice change here keys = Object.keys(localStorage), i = keys.length; while ( i-- ) { archive[ keys[i] ] = localStorage.getItem( keys[i] ); } return archive; }

Si desea una lista de formatos compactos, entonces haga esto en su lugar: aquí cada elemento de la matriz tendrá key=item que luego puede dividir en pares y así sucesivamente:

function allStorage() { var archive = [], keys = Object.keys(localStorage), i = 0, key; for (; key = keys[i]; i++) { archive.push( key + ''='' + localStorage.getItem(key)); } return archive; }


Un poco más sucinto:

function getAllLocalStorage() { return Object.keys(localStorage) .reduce((obj, k) => { return { ...obj, [k]: localStorage.getItem(k)}}, {}); }


localStorage no es una matriz, sino un objeto, así que intente algo. Me gusta esto:

for (var a in localStorage) { console.log(a, '' = '', localStorage[a]); }


// iterate localStorage for (var i = 0; i < localStorage.length; i++) { // set iteration key name var key = localStorage.key(i); // use key name to retrieve the corresponding value var value = localStorage.getItem(key); // console.log the iteration key and value console.log(''Key: '' + key + '', Value: '' + value); }