美文网首页微信小程序开发
保存、处理数值的数组sort方法无法排序问题(数组中是strin

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

作者: 霖深雾起不见你 | 来源:发表于2019-12-18 15:13 被阅读0次

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

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

    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) : ' ';
    

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

    相关文章

      网友评论

        本文标题:保存、处理数值的数组sort方法无法排序问题(数组中是strin

        本文链接:https://www.haomeiwen.com/subject/vkoynctx.html