Петлевое свойство объекта - PullRequest
0 голосов
/ 12 сентября 2018

Я храню корзину в localStorage. Если я нажимаю на новый продукт, я хочу добавить его в корзину. Если я снова нажму на тот же товар, я хочу добавить к количеству, чтобы избежать двойных записей.

Я хочу пройтись по объектам и проверить, соответствует ли свойство "id" объекта параметру "Id", отправленному в функцию. Если это так, я хочу обновить «кол-во» этого объекта, в противном случае создайте новый объект и добавьте в «корзину». Сейчас я проверяю, соответствует ли каждое свойство параметру "Id".

Вот как выглядит объект:

{id:Id, qty: Qty, price: Price}  

Это функция:

handleAdd =(Id, Qty, Price) =>{
        var newCart=[]
        var cart = JSON.parse(window.localStorage.getItem('Cart'))

    if(cart !== null){
    for(var x in cart)
    {
        if(x.id === Id){
            x.qty = Number(x.qty) + Number(Qty) 

        }
        else{
            var item = {id:Id, qty: Qty, price: Price}
            newCart.push(item)
        }
    }
    }else{
         newCart= {id:Id, qty: Qty, price: Price}
    }

    window.localStorage.setItem('Cart', JSON.stringify(newCart))
}

1 Ответ

0 голосов
/ 12 сентября 2018

РЕДАКТИРОВАТЬ: только что понял, что мой пример кода не добавляет элемент, если корзина существовала в хранилище, но элемент не присутствовал в корзине

Вам не нужно создавать новую корзинуиз существующего, просто используйте тот, который уже находится в хранилище.Примерно так:

handleAdd = (Id, Qty, Price) => {
    let cart = JSON.parse(window.localStorage.getItem('Cart'));
    // Track if item is already present
    let itemPresent = false;

    if(cart !== null){
        for(let i=0; i< cart.length; i++)
        {
            if (cart[i].id === Id) {
                cart[i].qty = Number(cart[i].qty) + Number(Qty);
                itemPresent = true;
                break;
            }
        }
        // If item wasn't present, add it to cart
        if (itemPresent === false) {
            cart.push({id:Id, qty: Qty, price: Price});
        }
    } else {
         cart = [{id:Id, qty: Qty, price: Price}];
    }

    window.localStorage.setItem('Cart', JSON.stringify(cart));
}

В будущих вопросах укажите, в чем проблема с поведением вашего текущего метода, какие сообщения об ошибках вы получите и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...