如何按最新和最旧在 moment.js 中进行排序?

gpb*_*lio 3 javascript momentjs

我的数组是这样的:

const myArr = [{text: 'Hello', created: '2018-05-22T08:56:42.491Z'}, {text: 'Hello', created: '2018-05-24T05:56:42.491Z'},]
Run Code Online (Sandbox Code Playgroud)

使用这种数组,我想按最新和最旧对它们进行排序,这是我当前的实现,它不起作用:

if (sortFilter === 'oldest') {
      contactData = contactData.sort(({ created: prev }, { created: next }) => moment(prev).format('L') - moment(next).format('L'));
    } else if (sortFilter === 'newest') {
      contactData = contactData.sort(({ created: prev }, { created: next }) => moment(next).format('L') - moment(prev).format('L'));
    }
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?

Edd*_*die 6

在不使用momentjs的情况下,您可以使用sort()和使用new Date()并将字符串转换为日期对象。

新的先来。

const myArr = [{
  text: 'Hello',
  created: '2018-05-22T08:56:42.491Z'
}, {
  text: 'Hello',
  created: '2018-05-24T05:56:42.491Z'
}, ];

myArr.sort((a,b)=> new Date(b.created).getTime() - new Date(a.created).getTime());

console.log(myArr);
Run Code Online (Sandbox Code Playgroud)

最古老的第一:

const myArr = [{
  text: 'Hello',
  created: '2018-05-22T08:56:42.491Z'
}, {
  text: 'Hello',
  created: '2018-05-24T05:56:42.491Z'
}, ];

myArr.sort((a, b) => new Date(a.created).getTime() - new Date(b.created).getTime());

console.log(myArr);
Run Code Online (Sandbox Code Playgroud)