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

JavaScript数组排序问题:先按group字母排序,再按priority数值排序

解决方案:按Group字母排序后再按Priority数值排序

你可以通过在排序函数中先判断group的排序结果,当group相同时再比较priority的方式实现需求,完整代码如下:

const arrayToSort = [{
    priority: 1,
    group: "a",
    id: "promo1"
  },
  {
    priority: 3,
    group: "a",
    id: "promo1"
  },
  {
    priority: 2,
    group: "a",
    id: "promo1"
  },
  {
    priority: 1,
    group: "b",
    id: "promo2"
  },
  {
    priority: 2,
    group: "e",
    id: "promo3"
  },
  {
    priority: 2,
    group: "c",
    id: "promo4"
  },
  {
    priority: 1,
    group: "f",
    id: "promo5"
  },
  {
    priority: 3,
    group: "d",
    id: "promo6"
  },
  {
    priority: 1,
    group: "g",
    id: "promo7"
  }
];

arrayToSort.sort((v1, v2) => {
  // 先按group字段做字母排序
  const groupSortResult = v1.group.localeCompare(v2.group);
  // 如果group不同,直接返回排序结果
  if (groupSortResult !== 0) {
    return groupSortResult;
  }
  // 若group相同,按priority字段做数值升序排序
  return v1.priority - v2.priority;
});

console.log(arrayToSort);

代码说明:

  • 使用localeCompare处理group的字母排序,比直接用>或<更可靠,能正确处理所有字母场景(包括特殊字符、不同语言环境),相等时返回0。
  • 当两个元素的group一致时,通过v1.priority - v2.priority实现数值升序排序;如果需要降序,只需改为v2.priority - v1.priority。

排序后的输出结果:

[
  { priority: 1, group: 'a', id: 'promo1' },
  { priority: 2, group: 'a', id: 'promo1' },
  { priority: 3, group: 'a', id: 'promo1' },
  { priority: 1, group: 'b', id: 'promo2' },
  { priority: 2, group: 'c', id: 'promo4' },
  { priority: 3, group: 'd', id: 'promo6' },
  { priority: 2, group: 'e', id: 'promo3' },
  { priority: 1, group: 'f', id: 'promo5' },
  { priority: 1, group: 'g', id: 'promo7' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:55:27