在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 金額與折扣的映射關系怎么寫比較好維護?

金額與折扣的映射關系怎么寫比較好維護?

問題: 在寫消費金額與折扣的問題的時候,很容易寫,但是發(fā)現(xiàn)經(jīng)常改折扣的范圍與折扣大小,發(fā)現(xiàn)維護起來很麻煩

  
    if (price < 12) {
      return 1;
    } else if (price < 36) {
      return 0.9;
    } else if (price > 36) {
      return 0.8;
    }

怎么開發(fā)會比較好呢,能夠解決日后的迭代問題,向上面的代碼就如果需要加一個term 為 24 的中間點就很尷尬。

回答
編輯回答
孤客

//data.js(映射關系)

export default [
    {discount:1,min:0,max:12},
    {discount:0.9,min:12,max:36},
    {discount:0.8,min:36,max:Infinity},
]

//logic.js(業(yè)務邏輯)

import arr from "./your-path/data.js"

/*
 * @description 根據(jù)金額計算折扣率
 * @params {Number} amount - 金額
 * @returns {Number} - 折扣率
*/
function getDiscount(amount){
    let result;
    for(const item of arr){
        const {discount,min,max} = item;
        if(amount >= min && amount < max){
            result = discount;
            break;
        }
    }
    if(!result){
        throw new Error("朋友醒醒,看看映射關系有沒有寫錯,或者你給result一個默認值");
    }
    return result;
}

// 實際使用
const val = 15.6;
const discount = getDiscount(val);
const finalValue = val * discount;
console.log(`本應支付${val}元,折扣率為${discount},最終要支付${finalValue}元`);

clipboard.png

如果需求有變 你只需要改data.js

export default [
    {discount:1,min:0,max:12},
    //插了個24的區(qū)間進去
    {discount:0.95,min:12,max:24},
    {discount:0.88,min:24,max:36},
    {discount:0.8,min:36,max:Infinity},
]
2018年8月29日 16:42
編輯回答
你的瞳

這不是後端的事嗎。後端搞個折扣接口。付款時前段讀取折扣,直接根據(jù)金額所在折扣區(qū)間打折。

2018年9月12日 04:40