Создаю массив и сохраняю в localstorage:
var myLikes = [];
myLikes[0] = {'slide':'1'}
localStorage.setItem("myCollection", JSON.stringify(myLikes));
Потом я хочу добавить новые данные в массив. Пытаюсь сделать это так:
var arrayLikes = localStorage.getItem('myCollection')
arrayLikes = [];
arrayLikes.push({'slide':'26'});
Но получаю только обновление массива, т.е. с удалением предыдущего значения.
Как мне правильно добавить новые значения в массив?
При записи значения, используется JSON.stringify()
, в localStorage записывается string
.
Соответственно, при чтении нужно выполнить обратное преобразование: JSON (строку) - в объект (массив):
var arrayLikes = JSON.parse(localStorage.getItem('myCollection') || '[]');
arrayLikes.push(/*...*/);
Выражение вида localStorage.getItem('key') || '[]'
работает следующим образом: если в localStorage отсутствует значение с указанным ключом, то getItem()
вернет null
- а так как null==false
, оператор ||
вернет второй (правый) операнд - json-строку с пустым массивом... которая и станет аргументом parse()
. Проще говоря: если значение еще не было записано в localStorage, то переменной присвоится пустой массив.
p.s.: Это не защищает от ошибок парсинга, и более надежным вариантом будет чтение и парсинг в try..catch
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Почему в items передаются последние значенияА логи выглядят так: заголовки как надо, а содержание такое?
Как получить полное название дня недели?Такой код выводит всю дату,как можно вывести только день?
Пытаюсь сделать модульную структуру приложения с использованием React + Redux, где отдельные модули будут лежать в своих репозиториях (например,...