【问题标题】:Javascript sort object by dd/mm/yyyy propertyJavascript 按 dd/mm/yyyy 属性对对象进行排序
【发布时间】:2025-12-12 15:30:01
【问题描述】:

我的大部分问题都在这个帖子中得到了回答:How Sort Array Date JavaScript dd/mm/yyyy?

但想知道如果日期在一个对象中怎么做,即

var info = [
  {
    name : 'a',
    date : '01/05/2017'
  },
  {
    name : 'b',
    date : '23/12/2013'
  },
  {
    name : 'c',
    date : '22/01/2015'
  }
]

没有骰子:

 (info.date).sort(function(a, b){
      var aa = a.split('/').reverse().join(),
          bb = b.split('/').reverse().join();
      return aa < bb ? -1 : (aa > bb ? 1 : 0);
  });

谢谢!

【问题讨论】:

  • 如果您可以添加库,您可以尝试使用 moment js

标签: javascript arrays sorting


【解决方案1】:

由于 info 是一个数组,因此对 info 和 info.date 应用排序方法,并在比较器函数内部比较数组中每个对象的日期值。像这样:

var info = [
  {
name : 'a',
date : '01/05/2017'
  },
  {
name : 'b',
date : '23/12/2013'
  },
  {
name : 'c',
date : '22/01/2015'
  }
]

info.sort(function(a, b){
  var aa = a.date.split('/').reverse().join(),
      bb = b.date.split('/').reverse().join();
  return aa < bb ? -1 : (aa > bb ? 1 : 0);
  });
console.log(info);

【讨论】:

  • aa &lt; bb ? -1 : (aa &gt; bb ? 1 : 0)可以简化为aa - bb
  • @kukkuz 不起作用,aa 和 bb 实际上是逗号分隔的字符串。