では実践的な例として「ショッピングカートの合計金額を計算する」処理を、filter / map / reduce を組み合わせて書いてみましょう。
ショッピングカートの例
データ(カートの中身)
const cart = [
{ name: 'Tシャツ', price: 1500, quantity: 2 },
{ name: 'ジーンズ', price: 5000, quantity: 1 },
{ name: '靴', price: 8000, quantity: 0 }, // 在庫切れで数量0
{ name: '帽子', price: 2000, quantity: 1 }
];
JavaScriptステップごとの処理
- filter → 数量が 1 以上の商品だけ残す
- map → 各商品の「小計(price × quantity)」を計算
- reduce → 小計を全部足して合計金額を出す
コード例
const total = cart
.filter(item => item.quantity > 0) // 数量がある商品だけ
.map(item => item.price * item.quantity) // 小計を計算
.reduce((acc, subtotal) => acc + subtotal, 0); // 合計を計算
console.log(total); // 10000 (Tシャツ 3000 + ジーンズ 5000 + 帽子 2000)
JavaScriptポイント
- filter で「不要なものを除外」
- map で「必要な形に変換」
- reduce で「1つの値にまとめる」
この流れはデータ処理の黄金パターンです。
実務でも「データを絞る → 加工する → 集計する」という流れは頻出します。
💡 さらに応用すると、「税込み価格を計算」したり、「商品名の一覧を作る」なども同じ流れで書けます。
