You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何将登录用户置于按字母排序的用户数组首位?

解决方案

你可以通过调整排序逻辑,让当前登录用户优先排在数组首位,其余用户保持原有字母排序。另外要注意sort方法会原地修改原数组,所以先拷贝一份数组再处理,避免产生副作用。

修改后的代码如下:

const getSortedFullNames = (
  ownerUsers: GetUsersRes,
  ownerUserNames: { [ownedBy: string]: string },
  userSettings?: UserSettings
): OwnerName[] => {
  if (!userSettings) return [];
  // 从userSettings中获取当前登录用户的ID,注意匹配你项目中的实际字段名
  const currentUserId = userSettings.userId;
  // 浅拷贝原数组,避免sort修改原数组
  const sortedArray = [...ownerUsers].sort((a, b) => {
    // 优先让当前登录用户排到最前面
    if (a.id === currentUserId) return -1;
    if (b.id === currentUserId) return 1;
    // 其余用户仍按lastName字母顺序排序
    return a.lastName.localeCompare(b.lastName);
  });
  return sortedArray.map(owner => ({
    userId: owner.id,
    name: ownerUserNames[owner.id],
  } as OwnerName));
};

关键说明:

  • 避免修改原数组:使用[...ownerUsers]浅拷贝原数组,再对拷贝后的数组排序,防止影响原数据的其他使用场景。
  • 优先排序登录用户:在排序函数中,先判断当前项是否为登录用户,让登录用户的排序优先级最高(返回-1表示排在前面)。
  • 适配实际字段:如果userSettings中存储当前用户ID的字段不是userId,请替换为你项目中的实际字段(比如userSettings.currentUser.id)。

内容的提问来源于stack exchange,提问作者vana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:54:12