在对矩对象列表(或具有矩属性的对象,应该是排序键)进行排序时,如果包含比较函数,那就太好了。 这样我们就可以做这样的事情:
array.sort(m.compare)
由于moment#valueOf
函数,比较函数是微不足道的。
var array = [
moment(),
moment().add(1, 'd'),
moment().subtract(1, 'd')
];
console.log(array.map(function (m) {
return m.format('YYYY-MM-DD')
}));
// ["2014-02-24", "2014-02-25", "2014-02-23"]
array.sort(function (a, b) {
return a - b;
});
console.log(array.map(function (m) {
return m.format('YYYY-MM-DD')
}));
// ["2014-02-23", "2014-02-24", "2014-02-25"]
谢谢。
我明确使用moment#valueOf
,这看起来我不需要。
使用打字稿,这并不那么简单。 打字不允许你说a - b
。
相反,我只是说:
a.isBefore(b) ? -1 : 1
不确定我是否以正确的方式获得了 1 和 -1。
使用打字稿,这并不那么简单。 打字不允许你说 a - b。
您可以将 moment#valueOf 显式调用为a.valueOf() - b.valueOf()
我偏向于:
momentsArray.sort((a, b) => a.diff(b));
我。
@robertmassaioli小心你的代码,
a.isBefore(b) ? -1 : 1
如果 a 相同,它将交换它们,而不是将它们保持在原位。 我知道这听起来并不多,但对某些人来说可能出乎意料。
最有用的评论
由于
moment#valueOf
函数,比较函数是微不足道的。