Сортировка по датам Asc и Desc
Пытаюсь отсортировать мой неизменный список по desc и / или asc по дате, но это не совсем работает, при сортировке слов он работает нормально, но не в следующей дате, которая есть в списке. Использование нисходящего и восходящего значения от реакции виртуализированы. Было бы полезно, если бы кто-то мог сказать мне, как лучше всего поступить об этом. Или, если нет, каковы другие альтернативы?
import { List } from 'immutable';
import * as React from 'react';
import { SortDirection } from 'react-virtualized';
class TopComp extends React.Component {
constructor(props) {
super(props);
const data = List([
{
0: {
'Date Reported': 'Mar 16, 2015',
}
},
{
0: {
'Date Reported': 'Mar 16, 2015',
}
},
{
0: {
'Date Reported': 'Mar 02, 2015',
}
},
{
0: {
'Date Reported': 'Mar 02, 2015',
}
},
{
0: {
'Date Reported': 'Feb 23, 2015',
}
},
{
0: {
'Date Reported': 'Feb 23, 2015',
}
},
{
0: {
'Date Reported': 'Oct 07, 2014',
}
},
{
0: {
'Date Reported': 'May 30, 2014',
}
},
]);
this.state = {
data,
};
}
render() {
const { data } = this.state;
let t = null;
t = data.sortBy(item => item[0]['Date Reported']).update((t) => {
console.log(t);
const Direction = SortDirection.DESC;
return (Direction === SortDirection.DESC ? t.reverse() : t);
});
console.log(t.toJS());
return (
<div>
<span>Hey</span>
</div>
);
}
}
export default TopComp;
Неужели не понимаю, почему некоторые даты приходят так, как должны?
1 ответ
Ваши даты не сортируются должным образом, потому что наиболее значимая часть (год) находится в конце строки, и сортировка будет рассматривать их как наименее значимые, поэтому ваша проблема.
Если вы можете получить данные другим способом (я надеюсь, что вы можете), добавьте к данным еще один элемент, который может быть либо меткой времени, либо строкой даты ISO, которая будет правильно сортироваться.
const data = List([
{
0: {
'Date Reported': 'Mar 16, 2015',
'isodate': "2015-03-16T03:30:49.566+0000"
}
},