해결법을 알아보기 전에 먼저 push()
메서드로 인해 발생하는 문제부터 살펴봅시다.
장바구니 상품 목록을 받아서 내용을 요약하는 간단한 함수를 생각해봅시다. 이 함수는 할인 금액을 확인하고 할인 상품이 두 개 이상이면 오류 객체를 반환합니다. 만약 오류가 없다면 상품을 많이 구매한 사람에게 사은품을 줍니다.
arrays/push/push.js
const cart = [{ name: 'The Foundation Triology', price: 19.99, discount: false, }, { name: 'Godel, Escher, Bach', price: 15.99, discount: false, }, { name: 'Red Mars', price: 5.99, discount: true, }, ]; const reward = { name: 'Guide to Science Fiction', discount: true, price: 0, }; function addFreeGift(cart) { if (cart.length > 2) { cart.push(reward); return cart; } return cart; } function summarizeCart(cart) { const discountable = cart.filter(item => item.discount); if (discountable.length > 1) { return { error: '할인 상품은 하나만 주문할 수 있습니다.', }; } const cartWithReward = addFreeGift(cart); return { discounts: discountable.length, items: cartWithReward.length, cart: cartWithReward, }; }