Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_Date_Sorting - Fatal编程技术网

以日期为键对地图进行排序(javascript)

以日期为键对地图进行排序(javascript),javascript,date,sorting,Javascript,Date,Sorting,我想用javascript对地图进行排序。 地图如下所示: 0: { key: '2020-09-29', value: { foo: 1, bar: 2} }, 1: { key: '2020-09-01', value: { foo: 3, bar: 4} }, 2: { key: '2020-09-08', value: { foo: 5, bar: 6} } days_map = new Map([...days_map].sort(function(key, value) { ret

我想用javascript对地图进行排序。 地图如下所示:

0: { key: '2020-09-29', value: { foo: 1, bar: 2} },
1: { key: '2020-09-01', value: { foo: 3, bar: 4} },
2: { key: '2020-09-08', value: { foo: 5, bar: 6} }
days_map = new Map([...days_map].sort(function(key, value) { return new Date(key); }));
等等

我找不到解决办法,有人能给我一个提示吗

我已经试过这样的方法:

0: { key: '2020-09-29', value: { foo: 1, bar: 2} },
1: { key: '2020-09-01', value: { foo: 3, bar: 4} },
2: { key: '2020-09-08', value: { foo: 5, bar: 6} }
days_map = new Map([...days_map].sort(function(key, value) { return new Date(key); }));
但这不是对地图进行排序

谢谢

var输入=[{
关键词:“2020-09-29”,
价值:{
傅:1,,
酒吧:2间
}
},
{
关键词:“2020-09-01”,
价值:{
傅:3,,
酒吧:4间
}
},
{
关键词:“2020-09-08”,
价值:{
傅:5,,
酒吧:6间
}
}
]
输入.排序((a,b)=>{
const first=a.key
常数秒=b键
返回第一个>第二个?1:(第一个<第二个?-1:0)
});

控制台日志(输入)可以使用键对数组进行排序

let map=newmap(['2020-09-29',{foo:1,bar:2}],'2020-09-01',{foo:3,bar:4}],'2020-09-08',{foo:5,bar:6}]],
排序=新映射(Array.from(Map).sort([a],[b])=>a.localeCompare(b));
log([…map]);
log([…排序])

.as console wrapper{max height:100%!important;top:0;}
这不能处理日期之间的相等性,在某些情况下可能会导致潜在的错误结果。如果他的输入键值是日期格式而不是空的,我想没有什么问题@Vlaz这里没有处理
a===b
。比较器必须返回三个值——较大值、较小值和相等值。你忽略了最后一种可能性,把它归为“较小的”。因此,您的比较器是不对称的-它为
比较(a,b)
比较(b,a)
产生不同的结果。这可能会欺骗排序算法,使某些项在不相等时排序为不相等。此外,这将取决于环境和数据集,因此在正常情况下很难找到和调试。排序和日期排序都有很好的文档记录,没有理由偏离。同样相关的是,不需要转换为
date
对象。日期是ISO8601字符串,这意味着字典排序等于时间排序。我明白你的意思,谢谢你的建议。我刚刚更新了答案