对象排序

最近有个需求是  设置会员等级与折扣

    要求是:更低的金额(等级 )不能有更高的折扣

   如 :普通会员   要求达到1000元      折扣0.8折

           黄金会员    要求达到2000元     折扣0.9折    这个就是有问题的在用户确定时要提醒用户了

 

   下面方法判断出正在设置的金额的  折扣区间

 isCorrect(num) {
    let isCorrect = {
      min: 0.01,//最小折扣
      max: 1//最大折扣
    }

    //当前已经存在的会员列表  拷贝一份
    let memberGradeList = JSON.parse(JSON.stringify(this.data.memberGradeList));
    for (let i = memberGradeList.length - 1; i >= 0; i--) {
        //status == 0 表示该会员已删除     i == this.datanowIndex 时表示正在修改这个等级
      if (memberGradeList[i].status == 0 || i == this.data.nowIndex) {
        memberGradeList.splice(i, 1);
      }
    }
      //根据金额排序
    memberGradeList.sort((a, b) => {
      a.number = Number.parseFloat(a.number);
      b.number = Number.parseFloat(b.number);
      return a.number - b.number;
    })
    // 当正在设置的金额  大于等于当前列表中最大值时
    if (num >= memberGradeList[memberGradeList.length - 1].number) {
      isCorrect.max = memberGradeList[memberGradeList.length - 1].discount;
    //当正在设置的金额  小于当前列表中最小值时
    } else if (num < memberGradeList[0].number) {
      isCorrect.min = memberGradeList[0].discount;
    } else {
      for (let j = 0; j < memberGradeList.length - 1; j++) {
    //memberGradeList[j].number   当前循环的金额   num  正在设置的金额
        if (memberGradeList[j].number >= num) {
          isCorrect.max = memberGradeList[j - 1].discount;
          isCorrect.min = memberGradeList[j].discount;
          break;
        } else {
          if (j == memberGradeList.length - 2) {
            isCorrect.max = memberGradeList[memberGradeList.length - 2].discount;
            isCorrect.min = memberGradeList[memberGradeList.length - 1].discount;
          }
        }

      }
    }
    isCorrect.max = Number.parseFloat(isCorrect.max);
    isCorrect.min = Number.parseFloat(isCorrect.min);
    return isCorrect;
  }




//dataValue.number   正在设置的金额
let isCorrect = that.isCorrect(dataValue.number);
        if (isCorrect.min > dataValue.discount || isCorrect.max <= dataValue.discount) {
    //util.alert  自己封装的弹窗
          util.alert(`当前等级的优惠应在${isCorrect.min}~${isCorrect.max}之间`, "none", 2000);
          return false;
        }

当然如果  当前的会员列表内没有  就不用比较  直接添加

 

会员名称与条件的唯一性 这个就很简单了就不贴代码了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值