プログラミング初学者のための実務につながる練習問題 JavaScript004 割引金額の算出

2020年5月19日

今日のタスク

売上金額を算出する処理の中で、各商品の割引金額を算出する処理を実装して欲しいと依頼がきました。

仕様

  • 商品の金額と割引割合を元に、割引額を算出する(金額:1200, 割合50%なら 600を返す)
  • 割引額は最大で商品の金額までとする

実装例

まずは以下のような実装をしてみました。basePriceが商品の金額、rateが割引割合です。

const calcDiscountAmount = (basePrice, rate) => {
  return basePrice * rate * 0.01
}

例えば calcDiscountAmount(1200, 50) の結果は、正しく 600 となります。

しかし、calcDiscountAmount(1200, 120) の結果が 1440 となり、仕様を満たしません。

そのため、以下のように修正しました。

const calcDiscountAmount = (basePrice, rate) => {
  if(rate > 100) return basePrice
  return basePrice * rate * 0.01
}

先に rate が 100 を超える場合は商品金額を先に返します。これで仕様の二つ目を満たすことができます。

本日はここまでです。次回は仕様に明記されていなかった振る舞いに対する動作を修正します。

お疲れ様でした。