У меня есть переменная с необычными индексами массива. Вот он: http://i.imgur.com/01nH8x5.png
Итак, я сохраняю его в локальном хранилище:
function Save(){
var save = {
//<...>
MapCellData: MapCellData,
MapCellDataE: MapCellDataE
//<...>
};
localStorage.setItem("save",JSON.stringify(save));
}
window.setInterval(function(){
Save()
}, 10000); // Autosave every 10 sec
Затем я иду в консоль Firebug и проверяю, какие элементы были сохранены, введя следующую команду:
JSON.parse(localStorage.getItem("save"));
Вот что я получаю: http://i.imgur.com/vva3mBk.png
Как видите, все значения переменных с отрицательными индексами и большими индексами стали неопределенными, а индексы от 0 до 4 сохранились корректно.
Примечание: MapCellData — это переменная, которая определяет, какое изображение будет применено к ячейке таблицы, а MapCellDataE — это переменная, которая определяет цвет фона ячейки. Обе эти переменные имеют одинаковые индексы, поэтому обе имеют одну и ту же проблему. Переменные, у которых нет таких странных индексов, сохраняются корректно.
Вот так это выглядит визуально.
Перед перезагрузкой страницы: http://i.imgur.com/B3FSu5e.png
После перезагрузки страницы: http://i.imgur.com/rhkZAa1.png
JSON.stringify
только сериализует индексы массива дляArray
объектов и отбрасывает все остальные свойства. Решение тривиально: не используйте массивы, если вы должны не используйте их. - person Bergi   schedule 01.12.2015JSON.stringify
удаляет их. - person Bergi   schedule 01.12.2015