参考:https://mp.weixin.qq.com/s/fROCXrawvyCmBZZRTohMZQ
案例
商场促销,规则如下:
- 部分产品已预售。为鼓励客户预订,我们将在原价基础上享受 20% 的折扣。
- 部分产品处于正常促销阶段。如果原价低于或等于100,则以10%的折扣出售;如果原价高于 100,则减 10 美元。
- 有些产品没有任何促销活动。它们属于默认状态,以原价出售。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class=""></div>
<script>
function preSalePrice(originalPrice) {
return originalPrice * 0.8;
}
function promotionPrice(originalPrice) {
if (originalPrice <= 100) {
return originalPrice * 0.9;
} else {
return originalPrice - 20;
}
}
function blackFridayPrice(originalPrice) {
if (originalPrice >= 100 && originalPrice < 200) {
return originalPrice - 20;
} else if (originalPrice >= 200) {
return originalPrice - 50;
} else {
return originalPrice * 0.8;
}
}
function defaultPrice(originalPrice) {
return originalPrice;
}
let priceStrategies = {
"pre-sale": preSalePrice,
promotion: promotionPrice,
"black-friday": blackFridayPrice,
default: defaultPrice,
};
function getPrice(originalPrice, status) {
let res = priceStrategies[status](originalPrice);
// return priceStrategies[status](originalPrice);
console.log(res);
}
getPrice(230, "black-friday");
</script>
</body>
</html>