如何根据角度日期对json数据进行排序?

时间:2021-05-27 04:23:43

标签: json angular

我从 api 中获取了 json 数据。现在我想根据日期的降序对响应进行排序。我是 Angular 的新手,所以请帮忙解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

下面给出了一个简单的解决方案=>

新更新

如果您的数据如下

 mydata= { "data": [ { "queryid" : "1", "date" : "21/09/2021", "ref_no" : "2345" } ] };

然后

试试这个

get sortMyData() {
    return this.mydata['data'].sort((a, b) => {
      return <any>new Date(b.date) - <any>new Date(a.date);
    });
  }

检查链接 =>我已经更新了我的代码 Link Stackblitz

旧解决方案

JSON 数据:

data = [
    {
      CREATEDate: "2018-08-15 17:17:30.0",
      Key1: "Val1",
      Key2: "Val2",
    },
    {
      CREATEDate: "2018-08-15 17:25:30.0",
      Key1: "Val1",
      Key2: "Val2",
    },
    {
      CREATEDate: "2018-08-15 17:28:30.0",
      Key1: "Val1",
      Key2: "Val2",
    }
  ]

排序功能:

get sortData() {
    return this.data.sort((a, b) => {
      return <any>new Date(b.CREATEDate) - <any>new Date(a.CREATEDate);
    });}

显示数据=>HTML

<div *ngFor="let item of sortData">
  {{item.Key1}} -- {{item.CREATEDate}} 
</div>

注意:检查Link StackBlitz

答案 1 :(得分:0)

@Kumari,当我们处理日期时,我们需要考虑我们是在处理“字符串”还是实际日期。在您的情况下,您有一个“字符串”(此外,格式为 dd/MM/YYYY),因此您需要转换数据以添加新属性、日期或字符串。

看到如果日期是格式为“YYYY/MM/dd”的字符串就可以正常排序了,因为总是“2021/01/29”小于“2021/02/12”(1月29日小于2 月 12 日)-但是“29/01/2021”大于“12/02/2021”-

所以,你可以,例如

datasort=this.data.map(x=>({
      ...x, //all the properties of x plus
            //a new propertie of date "normalized"
      dataFormated:x.date.substr(6)+x.date.substr(3,2)+x.date.substr(0,2)})
      ).sort((a:any,b:any)=>a.dataFormated>b.dataFormated?1:
                     a.dataFormated<b.dataFormated?-1:0)

  datasort=this.mydata.data.map(x=>({
      ...x, //all the properties of x plus
            //a new propertie of date "normalized"
      dataFormated:new Date(x.date.substr(6)+"-"+
                   x.date.substr(3,2)+"-"+
                   x.date.substr(0,2))})
      )
      .sort((a:any,b:any)=>a.dataFormated.getTime()-b.dataFormated.getTime())