前端JS对Map类型数据进行排序

本文记录了一次在前端JavaScript中按日期倒序排序Map数据类型的实现过程。遇到的问题是直接对Map的key进行排序后,赋值到新的Map中并未保持排序,原因是JavaScript对象(object)无法直接排序,而Array可以。解决方案是改用Map进行操作,最终成功实现了排序需求,并介绍了Map的遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端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)
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值