确定数组对象中的最小和最大日期

我有一个数组对象,它有一个这样的日期字段


    settledDate: "12-19-2018"

    settledDate: "12-12-2018"

    settledDate: "10-19-2018"

    settledDate: "10-12-2018"

我想确定这个数组中的最小和最大日期。


我试过这个,但没有运气


    const maxDate = new Date(Math.max.apply(null, this.props.form.details.bulkDetailsInvoices.settledDate)); 


    const minDate = new Date(Math.min.apply(null, this.props.form.details.bulkDetailsInvoices.settledDate)); 

关于我可以做些什么来完成这项工作的任何想法?


茅侃侃
浏览 139回答 2
2回答

侃侃尔雅

按日期对数组进行排序并选择第一个和最后一个:const dates = [  { settledDate: "12-19-2018" },  { settledDate: "12-12-2018" },  { settledDate: "10-19-2018" },  { settledDate: "10-12-2018" }];const sorted = dates.sort((a, b) => new Date(a.settledDate) - new Date(b.settledDate));const minDate = sorted[0];const maxDate = sorted.reverse()[0];console.log('maxDate : ', maxDate.settledDate);console.log('minDate : ', minDate.settledDate);

拉丁的传说

这是一个线性时间O(n)解决方案。(我在链接的重复问题中没有找到任何线性时间解决方案。)const dates = [&nbsp; { settledDate: "12-19-2018" },&nbsp; { settledDate: "12-12-2018" },&nbsp; { settledDate: "10-19-2018" },&nbsp; { settledDate: "10-12-2018" }];let maxDate = dates[0];let minDate = dates[0];dates.forEach(item => {&nbsp;if (new Date(item.settledDate) < new Date(minDate.settledDate)) {&nbsp; &nbsp;minDate = item;&nbsp;}&nbsp;&nbsp;if (new Date(item.settledDate) > new Date(minDate.settledDate)) {&nbsp; &nbsp;maxDate = item;&nbsp;}});console.log("minDate:", minDate);console.log("maxDate:", maxDate);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript