我从 api 中获取了 json 数据。现在我想根据日期的降序对响应进行排序。我是 Angular 的新手,所以请帮忙解决这个问题。
提前致谢。
答案 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())