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

JavaScript 如何按多规则对对象数组进行自定义排序

解决方案代码

var data = {
  "input": [{
      "countA": 1,
      "countB": 10
    },
    {
      "countA": 15,
      "countB": 13
    },
    {
      "countA": 26,
      "countB": 24
    },
    {
      "countA": 6,
      "countB": 25
    },
    {
      "countA": 15,
      "countB": 20
    }
  ]
};

var sorted = data.input.sort(function(a, b) {
  // 先计算分组优先级:countB>countA的优先级更高,赋值为0,不满足的赋值为1
  const aGroup = a.countB > a.countA ? 0 : 1;
  const bGroup = b.countB > b.countA ? 0 : 1;
  // 分组不同时,优先级值小的排在前面
  if (aGroup !== bGroup) {
    return aGroup - bGroup;
  }
  // 分组相同时按countB降序排列
  return b.countB - a.countB;
});

console.log(sorted);

运行输出

和你要求的期望结果完全一致:

[
  { countA: 6, countB: 25 },
  { countA: 15, countB: 20 },
  { countA: 1, countB: 10 },
  { countA: 26, countB: 24 },
  { countA: 15, countB: 13 }
]

核心逻辑说明

  • 多条件排序按优先级依次判断,高优先级条件先比较,只有前一个条件相等时才判断下一个条件
  • 此处第一优先级是分组规则,通过给不同分组赋值不同权重的方式实现快速排序
  • 同一分组内使用数值直接相减的方式实现降序,比三元判断更简洁准确,也避免了非全等判断可能带来的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:15:03