我想基于两个属性以升序对数组进行排序。
我有下面的数据数组,看起来像
[
{
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
存在多个项目,那么我想基于subCode
属性的code
对数组进行排序。
我在这里面临的问题是,subCode
是字符串,code
是数字。我已经尝试过使用array.sort
并通过将subCode
解析为整数,但是它返回了我不理解的另一个数字。
您可以减去compareFunction中的代码属性。如果a
和b
都具有相同的code
属性,则||
运算符将减去subCode
属性。 -
运算符会将字符串强制转换为数字,并将返回数字值。
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)