代码之家  ›  专栏  ›  技术社区  ›  Huy Le

角度6按日期排序的对象数组

  •  9
  • Huy Le  · 技术社区  · 8 年前

    角度模板

    <app-item *ngFor="let item of someArray"></app-item>
    

    阵列

    [
      {
        CREATE_TS: "2018-08-15 17:17:30.0",
        Key1: "Val1",
        Key2: "Val2",
      },
      {
        CREATE_TS: "2018-08-15 17:25:30.0",
        Key1: "Val1",
        Key2: "Val2",
      },
      {
        CREATE_TS: "2018-08-15 17:28:30.0",
        Key1: "Val1",
        Key2: "Val2",
      }
    ]
    
    5 回复  |  直到 8 年前
        1
  •  11
  •   derelict    8 年前

    除了cryptic的答案之外,您可能还希望将排序后的值包装在访问器中,以便包含在模板中,并在typescript类中添加getter:

    public get sortedArray(): YourItemType[] {
        return this.myArr.sort(...);
    }
    

    在模板中:

    <app-item *ngFor="let item of sortedArray"></app-item>
    

    或者,可以在将数组放入组件类时对其进行排序,并将排序后的版本存储在其中,但是访问器模式对于动态排序非常有用。

        2
  •  12
  •   Tiisetso Tjabane    8 年前

    你可以使用 sort

    阅读更多关于 here

    var myArr = [
    
    
    {
        CREATE_TS: "2018-08-15 17:17:30.0",
        Key1: "Val1",
        Key2: "Val2",
      },
      {
        CREATE_TS: "2018-08-15 17:25:30.0",
        Key1: "Val1",
        Key2: "Val2",
      },
      {
        CREATE_TS: "2018-08-15 17:28:30.0",
        Key1: "Val1",
        Key2: "Val2",
      }
    ]
    myArr.sort((val)=> {return new Date(val.CREATE_TS)})
    

    提升

    myArr.sort((val1, val2)=> {return new Date(val1.CREATE_TS) - new 
    Date(val2.CREATE_TS)})
    

    下降

    myArr.sort((val1, val2)=> {return new Date(val2.CREATE_TS) - new 
    Date(val1.CREATE_TS)})
    
        3
  •  9
  •   Krishna Rathore    8 年前

    Array.sort 用于排序数据。

    我已经在上创建了一个演示 Stackblitz . 我希望这对你/其他人有帮助/指导。

      data = [
        {
          CREATE_TS: "2018-08-15 17:17:30.0",
          Key1: "Val1",
          Key2: "Val2",
        },
        {
          CREATE_TS: "2018-08-15 17:25:30.0",
          Key1: "Val1",
          Key2: "Val2",
        },
        {
          CREATE_TS: "2018-08-15 17:28:30.0",
          Key1: "Val1",
          Key2: "Val2",
        }
      ]
    
      get sortData() {
        return this.data.sort((a, b) => {
          return <any>new Date(b.CREATE_TS) - <any>new Date(a.CREATE_TS);
        });
      }
    

    组件.html

    <div *ngFor="let item of sortData">
      {{item.Key1}} -- {{item.CREATE_TS}} 
    </div>
    
        4
  •  6
  •   Sarjerao Ghadage    7 年前

    在Typescript中使用此方法,可以轻松地按所需的顺序对日期值进行排序。您还可以通过删除新的Date()和getTime方法对任何类型的其他数据类型(如数字或字符串)进行排序。

    this.data.sort((a, b) => new Date(b.CREATE_TS).getTime() - new Date(a.CREATE_TS).getTime());
    
        5
  •  3
  •   Pruthvi Raj    7 年前

    对于最近的第一个:

    this.data.sort((a, b) => new Date(b.date1).getTime() - new Date(a.date1).getTime());
    

    对于OlderFirst:

    this.data.sort((b, a) => new Date(b.date1).getTime() - new Date(a.date1).getTime());
    
        6
  •  2
  •   Ben Steward    8 年前

    <app-item *ngFor="let item of someArray.sort(sortFunc)"></app-item>
    

    然后在component.ts文件中定义函数,因为您不能在模板中定义函数:

    sortFunc (a, b) {
      return a.CREATE_TS - b.CREATE_TS
    }
    

    return new Date(a.CREATE_TS).getTime() - new Date(b.CREATE_TS).getTime()
    
    推荐文章