Массив 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
Также попробовал несколько циклов, но не удалось.
localStorage
хранит только строки.
Используйте JSON.stringify()
для установки массива как строки и JSON.parse()
для разбора той же строки в массив, когда вы извлекаете данные
localStorage.setItem('olddata', JSON.stringify(oldData));
Команды консоли консоли и вывод здесь:
>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"]
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';
});
}