현재 상태 코드
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;
}
}