评分算法(五星好评为例-vue)

整体思路就是把所有的亮星,半星以及暗星放进一个数组
一般的评分后台仅仅只是返回一个数据,需要我们处理这个数据之后在前台显示出来图形化的星星.
首先定义常量:

  //星星的最大长度
  const LENGTH = 5
  //亮星
  const CLS_ON = 'on'
  //半星
  const CLS_HALF = 'half'
  //暗星
  const CLS_OFF = 'off'

其次定义一个方法:

  itemClasses() {
    //定义放置结果的数组
    let result = []
    //定义得分(先乘2再下取整最后再除以2,让得分大于*.5的最后都会返回*.5,得分小于*.5的最后都返回一个整数,
    以此来判断是否存在半星),this.score代表父组件传过来的数据,props接收.
    const score = Math.floor(this.score * 2) / 2
    //是否有小数(取余不为0)
    const hasDecimal = score % 1 !== 0
    //对得分下取整,处理亮星
    const integer = Math.floor(score)
    //循环处理,将亮星有多少push进结果数组中
    for (let i = 0; i < integer; i++) {
      result.push(CLS_ON)
    }
    //如果存在小数,就push一个半星
    if (hasDecimal) {
      result.push(CLS_HALF)
    }
    //如果数组结果小于预设最大长度,就push暗星进结果数组中
    while (result.length < LENGTH) {
      result.push(CLS_OFF)
    }
    //返回结果
    return result
  }

最后循环处理结果数组result就ok;

<span v-for="(itemClass,index) in itemClasses" :class="itemClass" class="star-item" :key="index"></span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值