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

如何对对象数组同时按id和case下的name字段实现双条件排序

多条件对象数组排序实现方案

问题解答

可以在排序时使用多个判断条件。你的需求为优先按case.name字段升序排序,name相同的条目再按id字段升序排序,通过自定义排序比较函数即可实现。

实现思路

  • 排序的比较函数会传入两个待比较的对象a、b
  • 第一步先对比两者的case.name字段:如果不相等,直接返回字符串比较结果控制排序顺序
  • 第二步如果name相等,再对比两者的id字段,返回数值差控制id的排序顺序

代码实现(以JavaScript为例)

// 示例数据
const data = [
  {
    "case": {
      "name": "Exemple1"
    },
    "id": 3
  },
  {
    "case": {
      "name": "Exemple1"
    },
    "id": 2
  },
  {
    "case": {
      "name": "Exemple2"
    },
    "id": 1
  },
  {
    "case": {
      "name": "Exemple3"
    },
    "id": 4
  },
  {
    "case": {
      "name": "Exemple2"
    },
    "id": 6
  }
]

// 多条件排序逻辑
const sortedData = data.sort((a, b) => {
  // 优先比较case.name的字典序
  const nameCompare = a.case.name.localeCompare(b.case.name)
  if (nameCompare !== 0) {
    return nameCompare
  }
  // name相同时按id升序排列
  return a.id - b.id
})

注意:JavaScript原生的Array.sort()是原地排序,会直接修改原数组。如果需要保留原数组,可以先对数组做浅拷贝后再执行排序,例如:const sortedData = [...data].sort(/* 比较函数 */)

运行代码后得到的sortedData和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:54:03