【问题标题】:How to sort date columns that have empty cells如何对具有空单元格的日期列进行排序
【发布时间】:2012-03-22 01:55:08
【问题描述】:

我正在使用位于http://www.kryogenix.org/code/browser/sorttable/ 的 sorttable.js 脚本

我遇到的一个问题是,在包含空单元格和日期的日期列上无法进行排序。我的日期是“MM/DD/YYYY”格式。

据我所知,排序发生在脚本中:

sort_mmdd: function(a,b) {
    mtch = a[0].match(sorttable.DATE_RE);
    y = mtch[3]; d = mtch[2]; m = mtch[1];
    if (m.length == 1) m = '0'+m;
    if (d.length == 1) d = '0'+d;
    dt1 = y+m+d;
    mtch = b[0].match(sorttable.DATE_RE);
    y = mtch[3]; d = mtch[2]; m = mtch[1];
    if (m.length == 1) m = '0'+m;
    if (d.length == 1) d = '0'+d;
    dt2 = y+m+d;
    if (dt1==dt2) return 0;
    if (dt1<dt2) return -1;
    return 1;
  }  

我想不通的是,当列上发生排序时,如何使空白单元格全部移到顶部或底部。

对我如何做这件事有什么想法吗?

【问题讨论】:

    标签: javascript sorttable.js


    【解决方案1】:

    好吧,当没有匹配到遥远的未来或遥远的过去时,您可以返回一个数组...

    mtch = a[0].match(sorttable.DATE_RE)|| ['nomatch','01','01','9000'];
    

    【讨论】:

    • +1 - 谢谢。这是正确的想法(并且很有帮助),但效果不太好。我认为也许“a [0] .match ...”正在返回未定义...无论哪种方式,我都想办法做到这一点,并会在稍后发布我的答案。随意评论它有什么可以改进的。
    • 刚刚查看了您的个人资料,发现您是 Mainer 的一员 - 毕竟这是一个小世界!我看到你的名字是“kennebec”,这对我来说似乎很可疑……我住在不伦瑞克;还没去过Readfield...
    【解决方案2】:

    我想出了如何让日期与空白单元格一起使用(见下文)。

    最终测试了“mtch”,然后再使用它......

    sort_mmdd: function(a,b) {
    
        mtch = a[0].match(sorttable.DATE_RE);
    
        if ((mtch == null) || (mtch == undefined)) {
            y = 0; d = 0; m = 0;
        }
        else {
            y = mtch[3]; d = mtch[2]; m = mtch[1];
        }
    
        if (m.length == 1) m = '0'+m;
        if (d.length == 1) d = '0'+d;
        dt1 = y+m+d;
    
        mtch = b[0].match(sorttable.DATE_RE);
    
        if ((mtch == null) || (mtch == undefined)) {
            y = 0; d = 0; m = 0;
        }
        else {
            y = mtch[3]; d = mtch[2]; m = mtch[1];
        }
    
        if (m.length == 1) m = '0'+m;
        if (d.length == 1) d = '0'+d;
        dt2 = y+m+d;
        if (dt1==dt2) return 0;
        if (dt1<dt2) return -1;
        return 1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2020-01-15
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多