Вот моя попытка выполнить ваш запрос на тот случай, если вы искали альтернативы. Этот метод просто обрабатывает ошибки как допустимые результаты и кодируется аналогично

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

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

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

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

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

Этот вопрос был задан ранее и уже имеет ответ. Если эти ответы не полностью отвечают на ваш вопрос, задайте новый вопрос Глядя на вывод

localStorage поддерживает только строки. Использование JSON.stringify() и JSON.parse() Глядя на вывод

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

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

Переменная 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

Использование JSON.stringify() и JSON.parse() как предложено нет! Это предотвращает, возможно, редкую, но возможную проблему имени члена, которое включает в себя разделитель (например, имя члена three|||bars).

, только что созданный так:

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

Подход JSON работает, на то есть 7 вам нужен json2.js, с ним он работает отлично, и, несмотря на один комментарий, в котором говорится, что на нем есть localStorage. Это действительно кажется лучшим решением с наименьшими хлопотами. Конечно, можно написать сценарии, выполняющие по существу то же самое как это делает json2, но в этом нет особого смысла.

по крайней мере со следующей строкой версии есть localStorage, но, как уже говорилось, вам нужно включить json2.js, потому что это не включено самим браузером: 4.0 (совместимо { ***} MSIE 7.0 ; Windows NT 6.1 ; WOW64 ; Trident / 5.0 ; SLCC2 ; .NET CLR 2.0.50727 ; .NET CLR 3.5.30729 ; .NET CLR 3.0.30729 ; BRI / 2 ; NP06 ; .NET4.0C ; .NET4.0E { ***} Zune 4.7) (Я бы написал комментарий к ответу, но не смогу).

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

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, но это раздражает, если вам нужно удалить элементы, так как вам придется переиндексировать массив :)