javascript - 如何按日期对数组对象进行排序?
问题描述
我有一个这样的对象数组
layerArr = [
{
name: "layer 1"
layerDate: "/Date(6958748400000)/"
layerDateFormatted: "31 December 2018"
etc...
}
{
name: "layer 2"
layerDate: "/Date(9375937500000)/"
layerDateFormatted: "23 December 2017"
etc...
}
{
name: "layer 3"
layerDate: "/Date(1554764400000)/"
layerDateFormatted: "15 January 2018"
etc...
}]
如何按日期对 layerArr 进行排序,最晚日期在前?在此示例中,当第 2 层正确排序时,我还希望最新日期成为第 1 层,最旧日期应成为最后一层。(上面的例子是由值组成的)
谢谢
编辑:建议给其他线程的链接没有解释如何更改“名称”,以便最新日期name ="layer 1"
一直到最旧日期成为最后一层。
解决方案
使用Array.sort()
:
layerArr = [
{ name: "layer 1", layerDate: "/Date(6958748400000)/", layerDateFormatted: "31 December 2018" },
{ name: "layer 2", layerDate: "/Date(9375937500000)/", layerDateFormatted: "23 December 2017" },
{ name: "layer 3", layerDate: "/Date(1554764400000)/", layerDateFormatted: "15 January 2018" }
];
sortedLayerArr = layerArr.sort(function(a, b) {
return new Date(a.layerDateFormatted)- new Date(b.layerDateFormatted);
}).map((layer, index) => ({
...layer,
name: `layer ${index + 1}`,
}));
console.log(layerArr);
console.log(sortedLayerArr);
推荐阅读
- android - 内存不断增加而没有从leakcanary收到内存泄漏通知
- mongodb - 在 VueJS 中从 mongoDB 获取项目数
- flutter - 如何在颤动中制作半圆形滑块
- google-apps-script - 谷歌表格 IMPORTHTML
- typescript - 与手动 Typescript 声明文件一起使用时,VS Code 智能感知不会自动提示
- vb.net - 带有 VB.NET 的金雅拓 ID Bridge CT-40
- sql - STRING_AGG 问题
- android - 无法将新值附加到列表
使用共享偏好。新值将是 String 类型 - jwt - OIDC JWT 身份声明(例如电话号码或电子邮件)可以是多个吗?
- android - Android Jetpack Paging 3:带 Room 的 PagingSource