代码之家  ›  专栏  ›  技术社区  ›  POV

OrderBy日期管道的角度?

  •  0
  • POV  · 技术社区  · 6 年前

    我有按数组按日期排序的管道属性。

    问题是不是每个元素的属性日期都在 args.key

    import {
      Pipe,
      PipeTransform
    } from "@angular/core";
    
    @Pipe({
      name: 'sort'
    })
    export class ArraySortPipe implements PipeTransform {
      transform(records: Array < any > , args ? : {
        key: string,
        direction: boolean,
        type: "int" | "string" | "date"
      }): any {
        return records.sort(function (a: any, b: any) {
          if (args.type === 'date' && args.direction) {
            return new Date(a[args.key]).getTime() - new Date(b[args.key]).getTime();
          }
        });
      };
    }
    

    如何将没有日期的属性移到列表的底部?

    0 回复  |  直到 6 年前
        1
  •  1
  •   mbojko    6 年前

    可以为排序函数添加另一个返回值:if a b 没有日期,返回1。

    比如:

      transform(records: Array < any > , args ? : {
        key: string,
        direction: boolean,
        type: "int" | "string" | "date"
      }): any {
        return records.sort(function (a: any, b: any) {
          if (args.type === 'date' && args.direction) {
              if(!a[args.key]) {
                  return -1;
              }
    
              if(!b[args.key]) {
                  return 1;
              }
    
              return new Date(a[args.key]).getTime() - new Date(b[args.key]).getTime();
          }
        });
      };
    

    (指示未执行)。

    推荐文章