为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2021-11-04 16:01:28
我有一个数组对象,它有一个这样的日期字段    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)); 关于我可以做些什么来完成这项工作的任何想法?
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

按日期对数组进行排序并选择第一个和最后一个:


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);


查看完整回答
反对 回复 2021-11-04
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

这是一个线性时间O(n)解决方案。(我在链接的重复问题中没有找到任何线性时间解决方案。)


const dates = [

  { settledDate: "12-19-2018" },

  { settledDate: "12-12-2018" },

  { settledDate: "10-19-2018" },

  { settledDate: "10-12-2018" }

];


let maxDate = dates[0];

let minDate = dates[0];


dates.forEach(item => {

 if (new Date(item.settledDate) < new Date(minDate.settledDate)) {

   minDate = item;

 }

 

 if (new Date(item.settledDate) > new Date(minDate.settledDate)) {

   maxDate = item;

 }

});


console.log("minDate:", minDate);

console.log("maxDate:", maxDate);


查看完整回答
反对 回复 2021-11-04
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信