小编Pro*_*niy的帖子

用点,字母,数字排序对象数组.我能够按数字排序,但混合值很难.不确定是否可行

我尝试了典型的排序功能,并检查项目是否为字符串.但我得到一个非常奇怪的输出.尝试了多种不同的方法.

 var arr = [{section: '12.2.a'},
               {section: '12.2.b.iii'},
               {section: '12.2.c'},
               {section: '12'},
               {section: '12A'},
               {section: '12.3.b'},
               {section: '12.3.c'},
               {section: 'Q2'},
               {section: 'Q32'},
               {section: 'Q6'},
               {section: 'Q5'}]



var arr2 = arr.sort(function(a, b) {
    var nums1 = a.section.split(".");
    var nums2 = b.section.split(".");

    for (var i = 0; i < nums1.length; i++) {
      if (nums2[i]) {
        if (nums1[i] !== nums2[i]) {
          if (isNaN(parseInt(nums1[i])) && isNaN(parseInt(nums2[i]))) {
            return nums1[i].localeCompare(nums2[i]);
          }
          return parseInt(nums1[i]) - parseInt(nums2[i]);   
        }
      } else {
        return 1;
      }
    }
    return -1; …
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting object

8
推荐指数
2
解决办法
167
查看次数

标签 统计

arrays ×1

javascript ×1

object ×1

sorting ×1