按照 dd/mm/yyyy 属性排序 JavaScript 对象

3

这个帖子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);
  });

thanks!


如果您可以接受添加一个库,那么您可以尝试使用 Moment.js。 - Nitish Phanse
1个回答

7

由于info是一个数组,因此将sort方法应用于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 < bb ? -1 : (aa > bb ? 1 : 0) 可以简化为 aa - bb - kukkuz
2
@kukkuz 那样做行不通,aa和bb实际上是逗号分隔的字符串。 - Dij

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接