保存、处理数值的数组sort方法无法排序问题(数组中是string类型的数值)

不想看需求的可以直接看代码部分

需求:小程序项目中,需要对商品价格(区间价格)和商品划线价、商品促销活动价格进行处理,判断,情况比较复杂,上个简单的图

image.png

标注

1.中划线划掉的价格为当前颜色的吊牌价(如果当前颜色不同尺码的吊牌价全都相同,则该价格是固定值,如果当前颜色下不同尺码的吊牌价不同,则取所有尺码吊牌价的最高价)
2.橙色价格是当前颜色的价格(如果当前颜色不同尺码价格全都相同,则该价格是固定值,如果当前颜色下不同尺码价格不同,则现价是一个区间价格,取所有尺码中最低价和最高价为区间范围)
3.促销活动价(可以先忽略,因为加上这个更复杂,难以理解,就取了没有活动价格的商品来演示)

image.png
因为后端返回的数据结构跟需求结构有出入,所有我把用到的部分数据处理保存了一下,红色区域标识当前颜色所有尺码商品的现价,未处理前是按后端返回的顺序push的,之前处理的时候直接用了sort方法,如图:
image.png
但是当时测试没测试出来会有反着的情况,如图
image.png
说明直接用sort方法排序并没有生效,查看的时候发现数组中的价格都是string类型
刚开始想先循环数组通过Number()或者parseInt()把数组中每一项转换成number类型,在调用sort方法,或者在存值的时候直接Number()或者parseInt()转一下,这两种方法应该也是可以的,但是我选择了一种好像最笨的方法,写了个方法,调用方法排序,看代码吧

方法:
priceSort (arr) {
      let newArr = arr.map(v => Number(v));
      const sortFun = (a, b) => a - b;  // a-b 从小到大  b-a 从大到小
      return newArr.sort(sortFun)
}
调用:
priceArr.length >= 2 ? priceArr = that.priceSort(priceArr) : ' ';

再不然其实直接来一个冒泡排序或者快速排序也是可以的!哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值