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

如何调整JS数组排序逻辑,将month为00的元素置于同model组末尾?

调整数组排序逻辑,让month为"00"的元素排在对应model组末尾

我现在可以按model和month对cars数组排序,但month值为"00"的元素会排在对应model组的首位,需要把这类元素调整到每组的最后一位。

现有代码

let cars = [{
    model: 'Ford',
    month: '12'
  }, {
    model: 'Ford',
    month: '03'
  }, {
    model: 'Ford',
    month: '01'
  }, {
    model: 'Ford',
    month: '00'
  },
  {
    model: 'Ford',
    month: '05'
  },
  {
    model: 'Fiat',
    month: '05'
  },
  {
    model: 'Fiat',
    month: '01'
  },
  {
    model: 'Fiat',
    month: '00'
  }
];

console.log(`Unsorted cars: ${JSON.stringify(cars)}`);

const sorted = cars.sort((a, b) => a.model.localeCompare(b.model) || a.month.localeCompare(b.month));

console.log(`Sorted cars: ${JSON.stringify(sorted)}`);

当前输出

[{"model":"Fiat","month":"00"},{"model":"Fiat","month":"01"},{"model":"Fiat","month":"05"},{"model":"Ford","month":"00"},{"model":"Ford","month":"01"},{"model":"Ford","month":"03"},{"model":"Ford","month":"05"},{"model":"Ford","month":"12"}]

期望输出

[{"model":"Fiat","month":"01"},{"model":"Fiat","month":"05"}, {"model":"Fiat","month":"00"},{"model":"Ford","month":"01"},{"model":"Ford","month":"03"},{"model":"Ford","month":"05"},{"model":"Ford","month":"12"}, {"model":"Ford","month":"00"}]


修改排序逻辑

核心是在同model分组内,单独处理month为"00"的元素:

  • 先按model完成分组排序
  • 同model下,若当前元素month为"00",则让它排在后面;若对比元素month为"00",则让当前元素排在前面
  • 其余情况按原逻辑比较month的字符串顺序

修改后的排序代码:

const sorted = cars.sort((a, b) => {
  // 先按model分组排序
  const modelCompare = a.model.localeCompare(b.model);
  if (modelCompare !== 0) {
    return modelCompare;
  }
  // 同model下调整"00"的位置
  if (a.month === "00") return 1;
  if (b.month === "00") return -1;
  // 正常比较month
  return a.month.localeCompare(b.month);
});

验证结果

运行修改后的代码,输出将与期望完全一致:

[{"model":"Fiat","month":"01"},{"model":"Fiat","month":"05"},{"model":"Fiat","month":"00"},{"model":"Ford","month":"01"},{"model":"Ford","month":"03"},{"model":"Ford","month":"05"},{"model":"Ford","month":"12"},{"model":"Ford","month":"00"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:45:37