我尝试对我的对象数组进行排序:
目的:
interface IFriend {
_id: string;
name: string;
surname: string;
avatar: string;
online: boolean;
}
我想按顺序进行-在线,姓氏,名字。我尝试了这个: friendsCopy
.sort((a: IFriend, b: IFriend) =>
a.online === b.online ? 0 : a.online ? -1 : 1
)
.sort((a: IFriend, b: IFriend) => a.surname.localeCompare(b.surname, "pl"))
.sort((a: IFriend, b: IFriend) => a.name.localeCompare(b.name, "pl"));
但是效果不好 最佳答案
因为您的排序方向错误。
如果您反转功能,则应提供所需的输出:
friendsCopy
.sort((a: IFriend, b: IFriend) => a.name.localeCompare(b.name, "pl"))
.sort((a: IFriend, b: IFriend) => a.surname.localeCompare(b.surname, "pl"))
.sort((a: IFriend, b: IFriend) =>
a.online === b.online ? 0 : a.online ? -1 : 1
);
按名称排序,然后按姓氏排序,然后按谁在线排序。最终列表将在线->姓氏->名称