@zjoin

Как в localStorage сделать счетчик объекта?

Нужно в localStorage записать массив объектов, как сделать, чтобы каждый раз при обновлении страницы в объекте создавалось свойство- счетчик, вместо добавления к предыдущему массиву?

Чтобы при обновлении страницы скажем раза три было в localStorage не так -

[{"id":1,"obj_id":234,"count":0},{"id":1,"obj_id":234,"count":0},{"id":1,"obj_id":234,"count":0}]

А так [{"id":1,"obj_id":234,"count":3}]

То есть менялось значение свойства count каждый раз при обновлении страницы.

https://jsfiddle.net/m3L287gd/
  • Вопрос задан
  • 647 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
var keyName = 'my_counter'
var emptyCounter = [{"id":1,"obj_id":234,"count":0}]
var myObject = JSON.parse(localStorage.getItem(keyName)) || emptyCounter
myObject[0].count++
localStorage.setItem(keyName, JSON.stringify(myObject));


https://jsfiddle.net/ctpsxzan/
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function reCount(objID) {
  var LS_KEY = 'your_key'; //localStorage key
  var arr = JSON.parse(localStorage.getItem(LS_KEY)) || [];
  var curObj = arr.find(function(obj) {
    return obj.obj_id === objID;
  });
  if(curObj) {
    curObj.count++;
  } else {
    curObj = {
      id: arr.length ? arr[arr.length - 1].id + 1 : 1,
      obj_id: objID,
      count: 1
    };
    arr.push(curObj);
  }
  localStorage.setItem(LS_KEY, JSON.stringify(arr));
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы