我的数组是这样的:
const myArr = [{text: 'Hello', created: '2018-05-22T08:56:42.491Z'}, {text: 'Hello', created: '2018-05-24T05:56:42.491Z'},]
对于这种数组,我想按最新和最旧的顺序对它们进行排序,这是我当前的实现,它不起作用:
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'));
}
我的代码有什么问题?
最佳答案
在不使用 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);
从大到小:
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);
关于javascript - 如何按最新和最旧在 moment.js 中进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577809/