我需要一个对我的帖子进行排序的方法,我得到了所有的帖子,但从最旧的帖子开始,我希望有一些东西可以首先基于属性[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;
}
谢谢!