对字符串的数字部分进行排序

var array = ['abc.def1.1', 'abc.def1.1234', 'abc.def1.1235', 'abc.def1.2', 'abc.def1.234'];

array.sort(function (a,b) {
    return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });
});

console.log(array);

 使用localeCompare()

 

 参考文献:关于javascript:对字符串的数字部分进行排序

 

项目实践:对鞋码进行重新排序

<script>
  $(function () {
    const values = []
    const selectTag = $(".product-info__variants_items.slider-switch").siblings().find("label")
    selectTag.each(function () {  //遍历获取标签值
      let value = $(this).text().trim() //去除前后空格
      switch (value) {  //改变标签值
        case '34': value = 'US4'; break;
        case '35': value = 'US5'; break;
        case '36': value = 'US5.5'; break;
        case '37': value = 'US6'; break;
        case '38': value = 'US7'; break;
        case '39': value = 'US8'; break;
        case '40': value = 'US8.5'; break;
        case '41': value = 'US9.5'; break;
        case '42': value = 'US10'; break;
        case '43': value = 'US11'; break;
        case '44': value = 'US11.5'; break;
        case '45': value = 'US12.5'; break;
        case '46': value = 'US13.5'; break;
        default: value
      }
      values.push(value)
    })
    values.sort(function (a, b) { //对字符串数字部分进行排序
      return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });
    })
    selectTag.each(function (index) { //重新遍历标签并赋值
      $(this).text(values[index])
    })
  })
</script>

实现如下图:

 

posted @ 2021-11-25 17:34  阿播吃的  阅读(227)  评论(0)    收藏  举报