• 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

Аноним
Аноним

Решил))

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

  return counters[counterName];
}
Аноним
Аноним

Отлично! Рад, что получилось.