Просто пытаюсь сохранить 6 значений массива в localStorage

1

Массив oldData [] содержит 6 значений. (целочисленные значения, полученные из api). Все, что я хочу сделать, это поместить эти значения в один ключ localStorage, называемый "olddata".

Я искал всюду и не нашел ничего, что сделало бы эту работу. Может ли кто-нибудь помочь мне с простым решением?

То, как я сейчас пытаюсь:

        let oldData = [];
        oldData.push(parkingData.availableCapacity);
        console.log(oldData); // Definitely holds 6 values 
        localStorage.setItem('olddata', oldData); // Only stores the last value 
        of oldData

Также попробовал несколько циклов, но не удалось.

Теги:
local-storage

3 ответа

1

localStorage хранит только строки.

Используйте JSON.stringify() для установки массива как строки и JSON.parse() для разбора той же строки в массив, когда вы извлекаете данные

 localStorage.setItem('olddata', JSON.stringify(oldData));
  • 0
    Да, извините, я забыл упомянуть об этом, но уже попробовал JSON.stringify, он не работает. Единственная разница в результате такова: нет stringify: 302 JSON.stringify: [302]
  • 0
    Так что он просто продолжает принимать последнее значение и не помещает полный массив в ключ localStorage ...
Показать ещё 6 комментариев
0

Команды консоли консоли и вывод здесь:

>let oldData = [];
undefined
>oldData.push('1st Value');
1
>oldData.push('2nd Value');
2
>oldData.push('3rd Value');
3
>console.log(oldData);
(3) ["1st Value", "2nd Value", "3rd Value"]
undefined
>localStorage.setItem('oldData', JSON.stringify(oldData));
undefined
>JSON.parse(localStorage.getItem('oldData'));
(3) ["1st Value", "2nd Value", "3rd Value"]
0
let url = 'https://datatank.stad.gent/4/mobiliteit/bezettingparkingsrealtime.json#';
let percent;
let mainDiv = document.getElementById('mainDiv');


function fetchParkingData() {
fetch(url)
.then((resp) => resp.json())
.then(function(data) {

    mainDiv.innerHTML = "";
    for(let i = 0; i < data.length; i++) {

        let parkingData = {
            name: data[i].name,
            totalCapacity: data[i].parkingStatus.totalCapacity,
            availableCapacity: data[i].parkingStatus.availableCapacity,
        }


        let oldData = [];
        oldData.push(JSON.parse(parkingData.availableCapacity));
        console.log(oldData);
        // console.log(oldData.join());
        localStorage.setItem('dataObject', JSON.stringify(oldData));
    };
})

.catch(function(error) {
    // error handling
    parkingDiv.innerHTML = 'Data could not be fetched';
});
}
  • 0
    Хм, я создал новый массив, который теперь называется names, поместил в него 6 значений, а затем поместил их в массив oldData, и это дало мне желаемый результат, поэтому что-то не так, когда я нажимаю parkingData, но я не знаю, что
  • 0
    Он создает 6 массивов в массиве oldData и помещает все значения в индекс 0
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню