Задача: Увеличить счётчик в localStorag

Max
Max
892
2
Содержание:
  1. Комментарии
Помогите с разобраться с задачей.

В localStorage по ключу «counters» находится JSON c объектом, полями которого являются имена счётчиков, а значениями — числовое значение счётчика. Напишите функцию 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'))
  
}
я так понимаю к нам приходит теперь объект с которым нужно работать. ТОлько я не понимаю от слова вообще куда что писать. Объясните пожалуйста по шагам как это реализовать.

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

  1. Max
    Max
    06.09.2020, 10:46
    Решил))

    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];
    }
    
    1. Александр Мальцев
      Александр Мальцев
      06.09.2020, 14:02
      Отлично! Рад, что получилось.
    Войдите, пожалуйста, в аккаунт, чтобы оставить комментарий.