javascript - 以字符串格式按日期对复杂对象数组进行排序
问题描述
我需要通过 key.expiry.value 对这个名为 gridObj 的数组进行排序。
我尝试了以下没有结果:
const sorted = Object.keys(gridObj).map((val) => gridObj[val]?.expiry?.sort((a, b) => {
const aa = a.value.split('/').reverse();
const bb = b.value.split('/').reverse();
return (aa > bb) - (aa < bb);
}));
我在做什么坏事?我在 StackOverflow 上尝试了其他解决方案,但没有人帮助我
我要这个
gridObj = [
"11566260": [
expiry: {
header: "Expiry",
value: "14/08/2023"
}
],
"11566261": [
expiry: {
header: "Expiry",
value: "10/08/2023"
}
],
]
变成这样:
gridObj = [
"11566261": [
expiry: {
header: "Expiry",
value: "10/08/2023"
}
],
"11566260": [
expiry: {
header: "Expiry",
value: "14/08/2023"
}
],
]
解决方案
你的数据有点挑剔。当其中一个假设不成立时,这里就有出错的余地。(多个键,数组中的多个项目等)
gridObj.sort((a, b) => {
const aa = new Date(a[Object.keys(a)[0]][0].expiry.value);
const bb = new Date(b[Object.keys(b)[0]][0].expiry.value);
return (aa > bb) - (aa < bb);
})
推荐阅读
- c++ - 使用 std::addressof(std::cout) 代替 &std::cout 有什么风险吗?
- maven - 当所有设置都正确时,Jenkins 自动部署失败。-- mapperLocations, Spring 中的错误 (illegalArgumentException, TomcatManagerException)
- php - Symfony 安装原则
- angular - 如何在使用 Renderer2 创建的元素上设置指令和属性绑定
- r - 在ggplot中为每个类的平均值添加红点
- c# - 如何使用 Task Async Await 从多个目录递归读取文件内容?
- algorithm - 什么是 LR(2) 解析器?它与 LR(1) 解析器有何不同?
- c# - 尝试连接到 Blazor 中的数据库但收到“MySql.Data.MySqlClient.Replication.ReplicationManager”错误
- css - 反应应用程序中的复杂布局:CSS 或 Bootstrap,或两者兼而有之?
- kotlin - Dagger 不支持注入私有字段