Почему ассоциативные массивы не работают в localStorage [""]?
Например, у меня есть следующий код:
localStorage["screenshots"] = new Array();
localStorage["screenshots"]["a"] = 9;
alert(localStorage["screenshots"]["a"]);
Arr = new Array();
Arr["screenshots"] = new Array();
Arr["screenshots"]["a"] = 9;
alert(Arr["screenshots"]["a"]);
(Я использую Google Chrome v9.0.597.107 в 32-разрядной версии Windows Vista)
Но работает только вторая часть (вывод alert() - это "a" )!
Первое предупреждение выводится контрастом "undefined"!
В чем проблема?
Спасибо.
Ответы
Ответ 1
localStorage хранит значения как строки, поэтому вам нужно, чтобы JSON сериализовал ваши объекты по пути и десериализовал их на выходе. Например:
var data = {'A': 9};
localStorage['screenshots'] = JSON.stringify(data);
// Later/elsewhere:
var data = JSON.parse(localStorage['screenshots']);
// 9
console.log(data.A);
Ответ 2
Объект localStorage
может хранить только строки. Чтобы хранить другие типы данных, используйте их, чтобы преобразовать их в строки и преобразовать их обратно при извлечении. В большинстве случаев вы хотели бы использовать JSON для этого.
Ответ 3
Локальное хранилище только хранит строковые ключи и строковые значения.
Механизм хранения DOM - это средство, с помощью которого пары строковых ключей/значений могут быть надежно сохранены и впоследствии извлечены для использования.
Источник: MDC.