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

如何先按属性排序对象数组,再对同属性项按字母排序?

解决方案:多条件排序(分类优先,标题次之)

你只需要在排序函数中先判断分类的比较结果,当分类相同时再对标题进行排序即可。修改后的代码如下:

array.sort((a, b) => {
  // 先按category倒序排序,保持你原本的逻辑
  const categoryCompare = -b.category.localeCompare(a.category);
  // 如果category不同,直接返回分类的排序结果
  if (categoryCompare !== 0) {
    return categoryCompare;
  }
  // 同分类内,按title的字母顺序正序排序
  return a.title.localeCompare(b.title);
});

逻辑说明

  • 分类排序优先级更高:先执行-b.category.localeCompare(a.category),维持你原本的分类倒序规则;
  • 同分类内标题排序:当两个对象的分类完全相同时(此时categoryCompare等于0),转而用localeCompare比较title的字母顺序,该方法会自动适配多语言的排序规则。

示例数组排序后结果

执行上述代码后,你的示例数组会变为:

[
  {title: 'Good', category: 'something else'},
  {title: 'Evening', category: 'something'},
  {title: 'Hello', category: 'something'},
  {title: 'Monday', category: 'something'},
  {title: 'Food', category: 'others'}
]

内容的提问来源于stack exchange,提问作者sir-haver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:15:39