¿Cómo almaceno una matriz en localStorage? [duplicar]

Resuelto David asked hace 14 años • 6 respuestas

Si no necesitara localStorage, mi código se vería así:

var names=new Array(); 
names[0]=prompt("New member name?");

Esto funciona. Sin embargo, necesito almacenar esta variable en localStorage y está resultando bastante difícil. He intentado:

var localStorage[names] = new Array();
localStorage.names[0] = prompt("New member name?");

¿Dónde me estoy equivocando?

David avatar Jul 29 '10 04:07 David
Aceptado

localStoragesolo admite cadenas. Uso JSON.stringify()y JSON.parse().

var names = [];
names[0] = prompt("New member name?");
localStorage.setItem("names", JSON.stringify(names));

//...
var storedNames = JSON.parse(localStorage.getItem("names"));

También puede utilizar el acceso directo para configurar/obtener elementos:

localStorage.names = JSON.stringify(names);
var storedNames = JSON.parse(localStorage.names);
Dagg Nabbit avatar Jul 28 '2010 21:07 Dagg Nabbit

El localStoragey sessionStoragesolo puede manejar cadenas. Puede ampliar los objetos de almacenamiento predeterminados para manejar matrices y objetos. Simplemente incluya este script y use los nuevos métodos:

Storage.prototype.setObj = function(key, obj) {
    return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
    return JSON.parse(this.getItem(key))
}

Úselo localStorage.setObj(key, value)para guardar una matriz u objeto y localStorage.getObj(key)recuperarlo. Los mismos métodos funcionan con el sessionStorageobjeto.

Si solo usa los nuevos métodos para acceder al almacenamiento, cada valor se convertirá en una cadena JSON antes de guardarlo y se analizará antes de que el captador lo devuelva.

Sebastian avatar Apr 11 '2012 15:04 Sebastian

Utilice JSON.stringify()y JSON.parse()como lo sugiere no! Esto evita el problema quizás raro pero posible de que un nombre de miembro incluya el delimitador (por ejemplo, nombre de miembro three|||bars).

jayeff avatar Aug 02 '2010 21:08 jayeff

Acabo de crear esto:

https://gist.github.com/3854049

//Setter
Storage.setObj('users.albums.sexPistols',"blah");
Storage.setObj('users.albums.sexPistols',{ sid : "My Way", nancy : "Bitch" });
Storage.setObj('users.albums.sexPistols.sid',"Other songs");

//Getters
Storage.getObj('users');
Storage.getObj('users.albums');
Storage.getObj('users.albums.sexPistols');
Storage.getObj('users.albums.sexPistols.sid');
Storage.getObj('users.albums.sexPistols.nancy');
Klederson Bueno avatar Oct 16 '2012 18:10 Klederson Bueno