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

如何按Set与Tiebreak交替规则对JavaScript对象数组排序?

如何排序JavaScript对象数组:Set N后紧跟对应Tiebreak N

嘿,这个排序需求很好解决,核心思路就是先按名称里的数字分组,再让同组的Set排在Tiebreak前面。咱们一步步来实现:

实现步骤

  1. 提取序号:从每个对象的name属性里提取出后面的数字(比如"Set 1"和"Tiebreak 1"的序号都是1),这是分组的关键。
  2. 排序规则:
    • 首先按提取出的序号从小到大排序,确保同序号的Set和Tiebreak挨在一起。
    • 同序号的情况下,让type:0的Set排在type:2的Tiebreak前面(因为0 < 2,直接比较类型值就行)。

完整代码示例

var obj = [ 
  {id: 31, name: "Tiebreak 1", type: 2}, 
  {id: 32, name: "Tiebreak 2", type: 2}, 
  {id: 25, name: "Set 1", type: 0}, 
  {id: 33, name: "Tiebreak 3", type: 2}, 
  {id: 26, name: "Set 2", type: 0}, 
  {id: 34, name: "Tiebreak 4", type: 2}, 
  {id: 35, name: "Tiebreak 5", type: 2}, 
  {id: 27, name: "Set 3", type: 0}, 
  {id: 28, name: "Set 4", type: 0}, 
  {id: 29, name: "Set 5", type: 0} 
];

// 排序函数
obj.sort((a, b) => {
  // 提取名称里的数字序号
  const numA = parseInt(a.name.split(' ')[1], 10);
  const numB = parseInt(b.name.split(' ')[1], 10);
  
  // 先按序号排序
  if (numA !== numB) {
    return numA - numB;
  }
  // 序号相同的话,Set(type=0)排在Tiebreak(type=2)前面
  return a.type - b.type;
});

console.log(obj);

代码说明

  • split(' ')[1]会把名称按空格拆分,取第二个元素就是数字部分,再用parseInt转成整数。
  • 排序函数里,先比较序号,序号不同就按从小到大排;序号相同的话,比较type值,0比2小,所以Set会排在前面。

运行这段代码后,数组就会变成你想要的:Set 1 → Tiebreak 1 → Set 2 → Tiebreak 2 → ... 的顺序啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:26:55