11월 13일 (토) shoppingCart componet, orderSummary getTotal() 함수 check 상태에 따라 변경

남이섬·2021년 11월 13일
0

현재 상태 코드

  const getTotal = () => {
    let total = {
      price: 0,
      quantity: 0,
    };

    for (let i = 0; i < cartItems.length; i++) {
      let price = renderItems.filter((el) => el.id === cartItems[i].itemId)[0]
        .price;

      total.quantity = total.quantity + cartItems[i].quantity;
      total.price = total.price + price * cartItems[i].quantity;
    }

    return total;
  };

cartItems => 현재 장바구니에 담겨있는 item 배열, itemId와 quantity만 들어 있다

renderItems => 현재 장바구니에 담겨있는 item의 순서에 맞게 item 정보들은 재 배열

즉,

현재 rendersItem을 통하여 cartItem과 비교하여 price를 찾았는데,
checkedItem을 통하여 checkedItem 배열에 있는 아이템만 total price를 구해야 한다

코드 업데이트

let cartItemId = cartItems.map((el) => el.itemId);
// cartItems의 배열의 요소중 id만 골라내어 배열을 만든다
for (let i = 0; i < cartItemId.length; i++) {
      if (checkedItem.includes(cartItemId[i])) {
      // checkedItem(check된 배열요소(cartitems의 id))가 cartItem 배열에 있다면
        let price = renderItems.filter((el) => el.id === cartItems[i].itemId)[0]
          .price;
                  // renderItems 배열안의 id 와 cartItems의 itemid가 같은 아이템중 price(가격)을 filter한다
        let quantity = cartItems[i].quantity;

        total.price = total.price + price * quantity;
        total.quantity = total.quantity + quantity;
      }
    }
profile
즐겁게 살자

0개의 댓글