javascript хранение массивов - Как сохранить массив в localStorage?



3 Answers

localStorage и sessionStorage могут обрабатывать только строки. Вы можете расширить объекты хранения по умолчанию для обработки массивов и объектов. Просто включите этот скрипт и используйте новые методы:

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

Используйте localStorage.setObj(key, value) для сохранения массива или объекта и localStorage.getObj(key) для его получения. Те же методы работают с объектом sessionStorage .

Если вы просто используете новые методы для доступа к хранилищу, каждое значение будет преобразовано в JSON-строку перед сохранением и анализом до того, как он будет возвращен получателем.

Источник: http://www.acetous.de/p/152

js save array

На этот вопрос уже есть ответ:

Если мне не нужен localStorage, мой код будет выглядеть так:

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

Это работает. Тем не менее, мне нужно сохранить эту переменную в localStorage, и она окажется довольно упрямой. Я пробовал:

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

Где я иду не так?




Просто создал это:

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');



Другим решением было бы написать оболочку, которая хранит массив следующим образом:

localStorage.setItem('names_length', names.length);
localStorage.setItem('names_0', names[0]);
localStorage.setItem('names_1', names[1]);
localStorage.setItem('names_' + n, names[n]);

Удаляет накладные расходы на преобразование в JSON, но будет раздражать, если вам нужно удалить элементы, так как вам придется переиндексировать массив :)




Related