当前位置: 首页 > 知识库问答 >
问题:

根据具有不同数据类型的两个键按升序排列对象数组

严书
2023-03-14

我想根据两个属性按升序对数组进行排序。

我有以下数据数组,看起来像

[
  {
    id: 1,
    name: 'ABP',
    code: 1460,
    subCode: '0010'
  },
  {
    id: 2,
    name: 'GKY',
    code: 1460,
    subCode: '0030'
  },
  {
    id: 3,
    name: 'CPT',
    code: 1410,
    subCode: '0070'
  },
  {
    id: 4,
    name: 'KLB',
    code: 1470,
    subCode: '0050'
  },
  {
    id: 5,
    name: 'POL',
    code: 1430,
    subCode: '0050'
  },
  {
    id: 6,
    name: 'FVB',
    code: 1410,
    subCode: '0050'
  },
]

我想把它排序成

[
  {
    id: 6,
    name: 'FVB',
    code: 1410,
    subCode: '0050'
  },
  {
    id: 3,
    name: 'CPT',
    code: 1410,
    subCode: '0070'
  },
  {
    id: 5,
    name: 'POL',
    code: 1430,
    subCode: '0050'
  },
  {
    id: 1,
    name: 'ABP',
    code: 1460,
    subCode: '0010'
  },
  {
    id: 2,
    name: 'GKY',
    code: 1460,
    subCode: '0030'
  },
  {
    id: 4,
    name: 'KLB',
    code: 1470,
    subCode: '0050'
  },
]

我想根据code属性按升序对数组进行排序,如果多个项目存在相同的code,那么我想根据code属性的subCode对其进行排序。

我在这里面临的问题是,< code>subCode在字符串中,< code>code在数字中。我尝试使用< code>array.sort并解析整数形式的< code>subCode,但它返回了我不理解的不同数字。

共有2个答案

晋西岭
2023-03-14

当你想比较字符串值和数字值(这里是< code>subCode)时,你需要先转换成数字来比较它们

请参见下面的代码。

Ary.sort(function (obj1, obj2) {
  if (obj1.code === obj2.code) {
    return Number(obj1.subCode) - Number(obj2.subCode)
  } else {
    return obj1.code - obj2.code
  }
})

我假设code的值总是数字。

元彦君
2023-03-14

您可以减去compareFunction中的代码属性。如果ab都具有相同的 property,则 property。 -运算符将强制字符串为数字,并返回一个数值。

const input=[{id:1,name:"ABP",code:1460,subCode:"0010"},{id:2,name:"GKY",code:1460,subCode:"0030"},{id:3,name:"CPT",code:1410,subCode:"0070"},{id:4,name:"KLB",code:1470,subCode:"0050"},{id:5,name:"POL",code:1430,subCode:"0050"},{id:6,name:"FVB",code:1410,subCode:"0050"},];

input.sort((a, b) => a.code - b.code || a.subCode - b.subCode)

console.log(input)
 类似资料:
  • 问题内容: 我有两个数组: 阵列1: 和数组2: 我需要基于合并这两个数组,并获得此: 我如何在不迭代低谷的情况下做到这一点? 问题答案: 你可以这样- 如果和的顺序不同,请使用以下代码: 如果和以相同的顺序使用

  • 问题内容: 如何在Java中根据该值的出现次数以升序排列数组中的元素。 这是我尝试过的: 问题答案: 这是一种开始的方法,可以基于以下想法:对映射中初始数组中每个整数发生的次数进行计数。计算完所有数字后,请按升序对地图进行排序,然后打印地图的输出: 它使用一个类来比较中的值:

  • 好的,这就是我目前的情况 这正在做的是由另一个类控制。一旦确定了要创建的员工类型,它就会创建所述员工类型的新实例。我已经为每个员工类型编写了所有的类。 我将实施的其他一些方法: 现在我想,只要我能弄清楚如何实现这些方法中的一个,其余的就会很容易地就能到位了。我的问题是如何将所有员工数据存储在一个可按多个不同数据类型排序的数组中。 编辑: 另外,我还应该注意到这是我的作业表中直接引用的排序将是必需的

  • 我有一个实体,其复合主键定义为 和实体 我们有一个前端应用程序发送以下请求 它在调用pageable with sort参数之后: 失败,使用 PropertyReferenceException:未找到类型Entity的属性theNum! 通过发送正确的请求(如: 最后,我的问题是--有没有一种方法可以告诉spring将收到的“thenum”排序参数正确地作为复合主键的一部分来处理? 或者我应该

  • 我是一名Java初学者,我正在基于Stackowerflow上的一个示例构建一个简单的购物清单程序: 使用用户输入将对象添加到ArrayList的方法 用户输入(名称价格)将商品添加到购物清单中。 现在我希望输出显示通过使用即可比按价格(上升)排序的对象,但不知道如何将其添加到代码中。我真的是个初学者,所以我希望我写的东西有意义。 非常感谢。 代码如下:

  • 我有一个对象列表,我需要按其中一个对象属性对其进行排序。 我可以用下面的代码按升序排序 但是,这是按升序排序列表,而我需要做的是按降序排序。在对对象列表进行排序时,这可能吗?