Как правильно расширить массив? [дубликат]

104
27 декабря 2019, 21:20
This question already has an answer here:
Добавление и обновление элемента в localstorage (1 ответ)
Закрыт 9 месяцев назад.

Создаю массив и сохраняю в localstorage:

var myLikes = [];
myLikes[0] = {'slide':'1'}
localStorage.setItem("myCollection", JSON.stringify(myLikes));

Потом я хочу добавить новые данные в массив. Пытаюсь сделать это так:

var arrayLikes = localStorage.getItem('myCollection')
arrayLikes = [];
arrayLikes.push({'slide':'26'});

Но получаю только обновление массива, т.е. с удалением предыдущего значения.

Как мне правильно добавить новые значения в массив?

Answer 1

При записи значения, используется 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.

READ ALSO
JS. Непонятное формирование объектов

JS. Непонятное формирование объектов

Почему в items передаются последние значенияА логи выглядят так: заголовки как надо, а содержание такое?

141
Разбить массив по ; и ,?

Разбить массив по ; и ,?

Как разбить массив по точке с запятой ; и запятой с пробелом ,+space ?

143
Как получить день недели js?

Как получить день недели js?

Как получить полное название дня недели?Такой код выводит всю дату,как можно вывести только день?

126
Как соединить части Redux приложения

Как соединить части Redux приложения

Пытаюсь сделать модульную структуру приложения с использованием React + Redux, где отдельные модули будут лежать в своих репозиториях (например,...

127