• JavaScript

Как создать объект со счетчиком в localstorage?

Помогите с разобраться с задачей.

В localstorage по ключу counters находится JSON-объект. Его полями являются имена счётчиков, а значениями этих полей – числовые данные каждого из них.

Суть задачи заключается в то, что необходимо написать функцию incrementCounter, на вход которой первым параметром передаётся counterName (имя счётчика). Задача функции: увеличить значение счётчика counterName на 1 и обновить данные в localstorage. В localstorage может находится невалидный JSON, чтение которого может првести к ошибке. В этом случае функция должна записывать новые данные, где у указанного счетчика будет значение 1. В конце функция должна возвращать значение счетчика после инкремента. Пример использования:
// в localStorage 1 счетчик: bannerClick = 5
incrementCounter('bannerClick'); // 6
incrementCounter('bannerClose'); // 1
// в localStorage 2 счетчика: bannerClick = 6, bannerClose = 1

Пока могу только распарсить и то не факт что правильно:

function incrementCounter(counterName) {
  const newObj = JSON.parse(localStorage.getItem('counters'));
}
Как понимаю, к нам приходит теперь объект с которым нужно работать. Только не знаю от слова вообще куда что писать. Объясните пожалуйста по шагам как это реализовать.

Комментарии: 2

Max
Max
Решил))

function incrementCounter(counterName){
    
    let counters;

    try {
        counters = JSON.parse(localStorage.getItem("counters"));
    } catch (er) {
        counters = {};
    }
    if(typeof counters[counterName] !== 'number'){
        counters[counterName] = 0;
    }
    counters[counterName]++;
    localStorage.setItem("counters", JSON.stringify(counters));

    return counters[counterName];
}
Александр Мальцев
Александр Мальцев
Отлично! Рад, что получилось.