繁体   English   中英

如何对具有空单元格的日期列进行排序

[英]How to sort date columns that have empty cells

我正在使用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;
  }  

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

关于如何执行此操作的任何想法?

好吧,当将来或过去都没有匹配项时,您可以返回一个数组...

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

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

经过最终测试的“ 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM