我尝试对我的对象数组进行排序:
目的:

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
    );
按名称排序,然后按姓氏排序,然后按谁在线排序。
最终列表将在线->姓氏->名称

07-24 17:24