如何按key属性中0-23位的日期对对象数组进行排序?
按key中的日期部分排序React元素数组
你需要对包含React元素的数组排序,每个元素的key属性由ISO格式日期(前24位)和唯一标识符拼接而成,只需基于key的日期部分排序即可。
解决方案
ISO标准的日期字符串(如2023-01-22T04:00:00.000Z)本身可以直接按字典序比较,结果和时间顺序一致,所以我们可以直接截取key的前24位作为排序依据:
升序排序(旧日期在前)
// 先复制原数组避免原地修改,再排序 const sortedAscArray = [...yourElementArray].sort((elemA, elemB) => { const datePartA = elemA.key.slice(0, 24); const datePartB = elemB.key.slice(0, 24); return datePartA.localeCompare(datePartB); });
降序排序(新日期在前)
如果需要倒序排列,只需调换比较顺序:
const sortedDescArray = [...yourElementArray].sort((elemA, elemB) => { const datePartA = elemA.key.slice(0, 24); const datePartB = elemB.key.slice(0, 24); return datePartB.localeCompare(datePartA); });
注意事项
- 使用
[...yourElementArray]是为了创建原数组的浅拷贝,防止sort方法直接修改原数组。如果不需要保留原数组,也可以直接调用yourElementArray.sort(...)。 - 确保所有元素的
key前24位都是有效的ISO日期格式,这样比较结果才会准确对应时间顺序。
内容的提问来源于stack exchange,提问作者Josua
相关产品推荐
相关产品推荐

