O melhor programa de cupons

insira a descrição da imagem aqui
Como usar o código para encontrar a melhor solução de cupom? Este é um problema de negócios que um amigo meu me pediu para consultar recentemente. Ele me perguntou se havia uma boa solução. Parecia uma grande dor de cabeça no início. Listamos duas soluções em palavras. É um prêmio, mas não significa que seus cupons não são suficientes, mas sua postura está errada. Se você mudar a postura para o plano dois, poderá cumprir o resgate de todos os prêmios.

Como usar o código para encontrar a solução ideal, este é o problema que ele encontrou. Minha ideia é: Primeiro, filtre os cupons que não são aplicáveis ​​aos usuários que possuem cupons. Por exemplo, o escopo de uso do Dai Loren é filtrado H1, ou seja, Dai Loren é aplicável: H1, Starbucks é aplicável: H2 , H3 e camomila é aplicável a H2

Em seguida, classifique de acordo com o número de cupons aplicáveis ​​do menor para o maior: a ordem é: DeLorean -> Camomila -> Starbucks

Então você pode usar os cupons em ordem, expressa através do código da seguinte forma

class Reword {
    
    
  constructor(name, amount, range) {
    
    
    this.name = name;
    this.amount = amount;
    this.range = range;
  }
}
class Coupon {
    
    
  constructor(name, amount, range) {
    
    
    this.name = name;
    this.amount = amount;
    this.range = range;
  }
}

var DLL_Reword = new Reword("戴洛伦", 50, ["H2", "H3"])
var XBK_Reword = new Reword("星巴克代金券100元", 100, ["H2", "H3"])
var XGJ_Reword = new Reword("小甘菊礼盒", 200, ["H2"])

var H2Coupon = new Coupon("H2券", 200, "H2")
var H3Coupon = new Coupon("H3券", 200, "H3")



var allRewords = [DLL_Reword, XBK_Reword, XGJ_Reword]
var myCoupons = [H2Coupon, H3Coupon]
var needPay = 0

let couponArr = []
myCoupons.forEach(x => {
    
    
  couponArr.push(x.range)
})

//将无优惠券的使用范围去除
for (let i = allRewords.length - 1; i >= 0; i--) {
    
    
  for (let j = allRewords[i].range.length - 1; j >= 0; j--) {
    
    
    if (couponArr.indexOf(allRewords[i].range[j]) == -1) {
    
    
      allRewords[i].range.splice(j, 1)
    }
  }
}

//通过使用范围的大小来排序
allRewords = allRewords.sort((a, b) => a.range.length - b.range.length)
console.log(allRewords);


/**
 * 计算优惠券剩余金额
 * 计算超出部分的金额
 */
for (let i = 0; i < allRewords.length; i++) {
    
    
  for (let j = 0; j < allRewords[i].range.length; j++) {
    
    
    switch (allRewords[i].range[j]) {
    
    
      case "H2":
        if (H2Coupon.amount >= allRewords[i].amount) {
    
    
          H2Coupon.amount -= allRewords[i].amount
        } else {
    
    
          allRewords[i].amount -= H2Coupon.amount
          H2Coupon.amount = 0
        }
        break;
      case "H3":
        if (H3Coupon.amount >= allRewords[i].amount) {
    
    
          H3Coupon.amount -= allRewords[i].amount
        } else {
    
    
          allRewords[i].amount -= H3Coupon.amount
          needPay += H3Coupon.amount
          H3Coupon.amount = 0
        }
        break;
    }
  }
}

console.log(H2Coupon);
console.log(H3Coupon);
console.log(needPay);

Acho que você gosta

Origin blog.csdn.net/weixin_42000816/article/details/118577279
Recomendado
Clasificación