@Ivan1331

Проблема с количеством товаров в корзине при занесении её в local storage?

Здравствуйте, написал функцию которая принимает id нового товара и заносит её в корзину которая лежит в
local srorage. Когда кликаешь по одному товару то всё работает как нужно, увеличивается counter и все ок. НО когда добавляешь ещё один товар то вместе с увеличение count добавляется ещё один товар. Не могу понять с чем связано уже голову сломал. Код
// Получаем данные из LocalStorage
function getCartData() {
    return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o) {
    localStorage.setItem('cart', JSON.stringify(o));
  
}


// Добавляем товар в корзину
function addItemToBag(newItem) {

    var cartData = getCartData() || []; // получаем данные корзины или создаём новый объект, если данных еще нет
  
      if(cartData.length==0){ // если в массиве ничего не лежит создаем нулевой элемент
         cartData.push({
                    id: newItem,
                    count: 1
                });
         }else{
    
          for (let i = 0; i < cartData.length; i++) { //цикл в котором проверяем не лежит ли уже товар с таким id корзине
            
            if (cartData[i].id === newItem) { // если лежит то увеличиваем count
              
                   cartData[i].count+=1;
            } else { //если нет то добавляем новый
               
                cartData.push({
                    id: newItem,
                    count: 1
                });
            }
        }
         }

    setCartData(cartData)  // Обновляем данные в LocalStorage
}

Скрин что выводит в local storage5dbec6ce60f26489218527.png
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Newn
@Newn
а зачем создавать пустой элемент в массиве, и потом проверять есть ли там элемент? само собой он увеличит единицу, и не посчитает правильно, лучше задавать и добавлять параметры с которыми уже надо работать,
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы