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

JavaScript按双属性排序高尔夫分组问题求助

高尔夫分组排序问题解决方案

问题根源

你当前的排序逻辑存在逻辑错误:使用&&同时判断position和letter都更大才返回1,这会导致大量排序场景判断失效。比如当a.position大于b.position但a.letter更小时,会错误地返回-1,导致顺序颠倒。

正确实现代码

要实现1A、1B、2A、2B的排序逻辑,需要先按position数字升序,position相同时再按letter字母升序,代码如下:

groups = groups.sort((a, b) => {
  // 优先比较position数字
  if (a.position !== b.position) {
    return a.position - b.position;
  }
  // position相同时,比较字母顺序
  return a.letter.localeCompare(b.letter);
});

代码说明

  • 数字比较:a.position - b.position直接利用数字差值实现升序,差值为正则a排后,负则排前。
  • 字母比较:localeCompare()方法会根据字母的自然顺序返回对应结果,完美适配A→B→C的排序需求。

原代码错误示例

比如比较2A和1B时:

  • a.position(2) > b.position(1)为true,但a.letter(A) > b.letter(B)为false,&&条件不成立,返回-1,导致2A被错误排在1B前面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:20:36