Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用moment.js从日期列表中获取最小或最大日期?_Javascript_Reactjs_Momentjs_Maxdate - Fatal编程技术网

Javascript 如何使用moment.js从日期列表中获取最小或最大日期?

Javascript 如何使用moment.js从日期列表中获取最小或最大日期?,javascript,reactjs,momentjs,maxdate,Javascript,Reactjs,Momentjs,Maxdate,我想从handleClick函数中给出的日期列表中获取最大日期。 如何使用moment.js从日期列表中查找最大日期 我有以下代码: import React, {Component} from 'react'; import moment from 'moment'; class Getdate extends Component { constructor() { super(); this.state = { dates = [] } t

我想从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
import React,{Component}来自'React';
从“力矩”中导入力矩;
类Getdate扩展组件
{
构造函数(){
超级();
此.state={
日期=[]
}
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);
}
渲染{
返回(
获取最大日期
)
}
}
导出默认Getdate

使用自定义比较器对它们进行排序,然后选择第一个(或最后一个,试用)

您可以使用以下功能:

let moments = this.state.dates.map(d => moment(d)),
    maxDate = moment.max(moments)

虽然这看起来是可行的,但请注意,
sort
要求从比较函数返回数值,而不是布尔值。请参阅更简明的是
this.state.dates.map(moment)
@DuncanThacker,不,不要使用该简明表单,因为它将向
moment
发送额外的参数,并导致分析错误。@Jimmy为什么要发送额外的参数<代码>(d=>力矩(d))和
(力矩)
是等效的。这就像做
['abc','bcd'].map(x=>console.log(x))
['abc','bcd'].map(console.log)
它们是一样的,不是吗?@Aquazi我指的“额外参数”是
map
函数的参数。下面是一个展示错误的小摆设:错误是由第二个
map(…)
参数(索引)引起的,该参数会导致错误,因为
moment(…)
需要一个字符串格式作为第二个参数。请注意,如果您碰巧将空列表传递到
moment.max
,它错误地返回当前日期,而不是更合理的值,如
undefined
let moments = this.state.dates.map(d => moment(d)),
    maxDate = moment.max(moments)