如何使用角度管道按日期字符串排序



我需要一个对我的帖子进行排序的方法,我得到了所有的帖子,但从最旧的帖子开始,我希望有一些东西可以首先基于属性[formatedDate:string]或至少基于[datePost:Date]来显示我的新帖子。我有一个问题,订购我的帖子,我尝试了很多选项,但我总是得到相同的错误:

ERROR TypeError: item.sort is not a function

我不知道下一步该怎么办。。请帮帮我:<

这是我的分拣管道:

transform(array: PostG[], args: string): PostG[] {
if(!array || array === undefined || array.length === 0) return null;

array.forEach((item: any) => {
item.sort((a: any, b: any) => {
if (a.formattedDate < b.formattedDate) {
return -1;
} else if (a.formattedDate > b.formattedDate) {
return 1;
} else {
return 0;
}
}); 
console.log(item.formattedDate);
return item.formattedDate;
})
}

这是帖子的界面:

export interface PostG {
getTime();
author:  { [key: string]: Author};
datePost: Date;
description: string
dislike: number[];
formattedDate: string;
images: string[];
like: number[];
linkEdit: string;
link:string;
slug: string;
title: string
uniqueID: string;
}

我在这里订阅帖子

ngOnInit() {
this.http.get(this.apiKey).subscribe((data: any) =>{   
this.allPosts = data.data.post;
console.log(data);
})
}

嗨,我问了一个为nodeJ做排序方法的朋友,他说他使用了reverse((;所以后来我意识到我只需要用另一种方式更改符号,并使用"Date"属性进行排序,就可以首先获得新帖子。

这是最后一个代码:

transform(array: PostG[], args: string): PostG[] {
if(!array || array === undefined || array.length === 0) return null;

array.sort((a: any, b: any) => {
if (a.datePost > b.datePost) {
return -1;
} else if (a.datePost < b.datePost) {
return 1;
} else {
return 0;
}
});
console.log(array);
return array;
}

谢谢!

最新更新