Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对数组对象中的多个字段进行排序_Javascript - Fatal编程技术网

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,}]现在检查它,让我知道它是否工作。