Javascript 对数组对象中的多个字段进行排序
我有这样的数组对象:Javascript 对数组对象中的多个字段进行排序,javascript,Javascript,我有这样的数组对象: [{ A: '24/12/2020', J: 54106, }, { A: '10/dd/2020', J: 54103 }, { A: 'mm/29/2020', J: 54103 }] 我想先对J字段排序,然后再对A字段排序。。但我排序时有问题, 我想要这样的结果: [ { A: '10/dd/2020', J: 54103 }, { A: 'mm/29/2020', J: 54103 }, { A: '24/12/2020', J: 54106, }] 但数据反应
[{ A: '24/12/2020', J: 54106, }, { A: '10/dd/2020', J: 54103 }, { A: 'mm/29/2020', J: 54103 }]
我想先对J字段排序,然后再对A字段排序。。但我排序时有问题,
我想要这样的结果:
[ { A: '10/dd/2020', J: 54103 }, { A: 'mm/29/2020', J: 54103 }, { A: '24/12/2020', J: 54106, }]
但数据反应是:
[{ A: 'mm/29/2020', J: 54103 }, { A: '10/dd/2020', J: 54103 }, { A: '24/12/2020', J: 54106, }]
我的代码在这里:
result.sort(function (a, b) {
return parseFloat(a.J) - parseFloat(b.J) || (a.A) - (b.A);
});
我认为它需要从数字到文本排序,但它不是那样的,只需编写一个比较函数来排序即可。首先比较J字段,然后比较A字段
const数据=[
{A:'24/12/2020',J:54106},
{A:'10/dd/2020',J:54103},
{A:'mm/29/2020',J:54103},
];
常数cmp=(x,y)=>{
如果(x.J==y.J){
返回x.A.localeCompare(y.A);
}
返回x.J>y.J?1:-1;
};
const-ret=data.sort(cmp);
控制台日志(ret)代码>单个值周围的括号无效。零件日期字符串的W顺序是什么?我不知道为什么,但当“a”:“mm/29/2020”在第一个obj中时,它不起作用,请检查它:什么是字段?你们想把它作为一个日期或字符串来比较吗?我只想把它作为字符串来比较,我认为数字会先排序,然后是字符,对吗?我试着用这个数据,但不起作用:const data=[{a:'mm',J:54103,},{a:'10',J:54103,}]代码>现在检查它,让我知道它是否工作。