美文网首页微信小程序开发
保存、处理数值的数组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