Javascript 如何使用moment.js从日期列表中获取最小或最大日期?
我想从handleClick函数中给出的日期列表中获取最大日期。 如何使用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
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)