数组Javascript的数组中的Sort元素

数组Javascript的数组中的Sort元素,javascript,arrays,sorting,Javascript,Arrays,Sorting,我希望按时间对数组进行排序(这是第三个元素)。但是,当我打印出结果时,数组的顺序似乎没有区别 我能知道是什么错误吗?谢谢大家! const events =[ [ 1, '1230000003', '09:00:00' ], [ -1, '1230000003', '14:00:00' ], [ -1, '1110000002', '12:30:00' ], [ 1, '1110000002', '14:00:00' ], [ -1, '1110000007', '08:30

我希望按时间对数组进行排序(这是第三个元素)。但是,当我打印出结果时,数组的顺序似乎没有区别

我能知道是什么错误吗?谢谢大家!

const events =[
  [ 1, '1230000003', '09:00:00' ],
  [ -1, '1230000003', '14:00:00' ],
  [ -1, '1110000002', '12:30:00' ],
  [ 1, '1110000002', '14:00:00' ],
  [ -1, '1110000007', '08:30:00' ],
  [ 1, '1110000007', '11:00:00' ],
  [ -1, '1110000008', '09:00:00' ],
  [ 1, '1110000008', '12:00:00' ]
]
这是我的代码:

 events.sort((a, b) => a[0][2] - b[0][2]);
 console.log("sorted start time",events);
改变这一点

events.sort((a,b)=>a[0][2]-b[0][2]);
为此:

events.sort((a,b)=>a[2]>b[2]?1:-1);
结果:

[
[-1, "1110000007", "08:30:00"],
[-1, "1110000008", "09:00:00"],
[1, "1230000003", "09:00:00"],
[1, "1110000007", "11:00:00"],
[1, "1110000008", "12:00:00"],
[-1, "1110000002", "12:30:00"],
[1, "1110000002", "14:00:00"],
[-1, "1230000003", "14:00:00"]
]

因为是date is string,所以应该使用排序函数作为

const事件=[
[ 1, '1230000003', '09:00:00' ],
[ -1, '1230000003', '14:00:00' ],
[ -1, '1110000002', '12:30:00' ],
[ 1, '1110000002', '14:00:00' ],
[ -1, '1110000007', '08:30:00' ],
[ 1, '1110000007', '11:00:00' ],
[ -1, '1110000008', '09:00:00' ],
[ 1, '1110000008', '12:00:00' ]
]
events.sort((a,b)=>a[2].localeCompare(b[2]);

console.log(事件)您可以使用
localCompare

const events=[1,'1230000003','09:00:00'],[1,'1230000003','14:00:00'],[-1,'1110000002','12:30:00'],[1,'1110000002','14:00'],[-1,'1110000007','11:00:00'],[1,'1110000008','09:00'],[1,'1110000008','12:00']
events.sort((a,b)=>a[2].localeCompare(b[2]);

日志(“排序的开始时间”,事件)
Hm.
a[0][2]
在您的案例中未定义。与a
b[0][2]
@VasylMoskalov相同,我明白了。。但是,当我对其他元素(如
a[0][1]
b[0][1]
执行此操作时,它似乎没有问题。是的,此解决方案适用于我的代码!但是,当我运行代码时,我是否可以知道为什么这将首先出现
[1,“1230000003”,“09:00:00”],
而不是
[-1,“1110000008”,“09:00:00”],
?这是因为函数比较时间,在这种情况下,两个值相等,由于第一个数组中的第一个值是先传递的,因此它将在结果中显示第一个值,这是否意味着从?谢谢!这确实有帮助!但是我能知道为什么当涉及到像
[1,'1230000003','09:00:00']
[-1,'1110000008','09:00:00']
一样的时间时,第一个会排在第一而不是第二个,如果我想要这个
[-1,'1110000008','09:00']
先来?您可以自定义逻辑,检查您要检查的字段是否相同,然后根据您提到的另一个字段进行比较