前端JS对Map类型数据进行排序
今天接到一个需求,按照日期对数据进行倒序排序,过程中遇到一些问题,记录一下,返回数据类型如下。
var mapList = {
20200312:[
{
'key1':"000",
'key2':"111",
},{
'key1':"000",
'key2':"111",
}
],
20200310:[
{
'key1':"111",
'key2':"111",
},{
'key1':"111",
'key2':"111",
},{
'key1':"111",
'key2':"111",
}
],
20200314:[
{
'key1':"222",
'key2':"111",
},{
'key1':"222",
'key2':"111",
},{
'key1':"222",
'key2':"111",
}
]
}
按照正常思维把key取出来–排序–赋值应该就可以了
var keyList = []
for (var key in mapList) {
keyList.push(key)
}
keyList.sort(function(key1, key2) {
return key2 - key1
})
var resultList = {}
for(var i=0;i<keyList.length;i++){
console.log(keyList[i])
resultList [keyList[i]] = mapList[keyList[i]]
}
console.log(resultList )
然而当我最后打印resultList 时发现并不是
打印每一次的key是从大到小的,但是赋完值之后结果就又是从小到大了,最后发现object好像是排不了序?array是可以的,具体原因没有研究。。后来把object换成map就可以了
var resultList = new Map()
for(var i=0;i<keyList.length;i++){
console.log(keyList[i])
resultList.set(keyList[i], mapList[keyList[i]])
}
console.log(resultList)
这就结束啦~顺便记录一下map的遍历方法
for([key,value] of resultList){
console.log(key)
console.log(value)
}