Создаю массив и сохраняю в 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.
Продвижение своими сайтами как стратегия роста и независимости