【问题标题】:How to order array objects by date?如何按日期对数组对象进行排序?
【发布时间】:2019-04-26 14:40:42
【问题描述】:

我有一个这样的对象数组

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" 一直到最旧日期成为最后一层。

【问题讨论】:

标签: javascript arrays sorting date


【解决方案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);

【讨论】:

  • 谢谢,这是按日期排序的,但它不会相应地更改“名称”属性,以便最新日期成为“第 1 层”一直到最旧的日期,该日期应该成为最后一层。
  • @NickyLarson 这个问题之前没有提到
  • 原来如此,我所做的唯一编辑是带有 EDIT 的部分
  • @NickyLarson 这不是一个大问题,您可以遍历排序的数组并在循环中更新名称
猜你喜欢
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
相关资源
最近更新 更多