Сортировать массив по дате дает неожиданные результаты

у получить максимальную дату из списка дат, указанного вhandleClick функция. Как найти максимальную дату из списка дат, используяmoment.js?

У меня есть следующий код:

import React, {Component} from 'react';
import moment from 'moment';

class Getdate extends Component
{
  constructor() {
    super();
    this.state = {
       dates = []
    }
    this.handleClick = this.handleClick.bind(this);
  }
  handleClick() {
     this.state.dates = ['2017-11-12', '2017-10-22', '2015-01-10', '2018-01-01', '2014-10-10'];
     console.log(this.state.dates);
  }
  render{
    return (
     <button onClick={this.handleClick}>Get Max Date</button>
    )
  }
}
export default Getdate

Ответы на вопрос(2)

Решение Вопроса

Вы можете использоватьmoment.max функция:

let moments = this.state.dates.map(d => moment(d)),
    maxDate = moment.max(moments)
 Subhojit02 окт. 2017 г., 08:46
Большое спасибо @Джимми. Это сработало.
 Duncan Thacker30 сент. 2017 г., 14:30
Хорошая точка зрения! Не думал об этом.
 Jimmy30 сент. 2017 г., 14:20
@DuncanThacker, нет, не используйте эту краткую форму, потому что она отправит дополнительные параметрыmoment и привести кошибка разбора.
 Duncan Thacker30 сент. 2017 г., 14:12
Более кратким являетсяthis.state.dates.map( moment )
 Boaz30 сент. 2017 г., 14:01
... а такжеmoment.min

затем выберите первый (или последний, попробуйте);

   array.sort(function(d1, d2) {
       return moment(d1).isBefore(moment(d2));
        });
 Boaz30 сент. 2017 г., 13:58
Хотя это выглядит так, как будто это будет работать, учтите, чтоsort ожидаетчисловой возвращать значения из функции сравнения, а нелогический, ВидетьСортировать массив по дате дает неожиданные результаты

Ваш ответ на вопрос