如何查找数组中最近的日期?

问题描述 投票:0回答:1

我有一系列日期。

['2023-06-02T00:00:00.000+03:00','2023-06-02T00:00:00.000+03:00','2023-12-04T00:00:00.000+03:00']

我需要在切换日期组件时,将所选日期与给定数组进行比较,并在切换到右侧或左侧时给出最近的日期 我开始制定一个方法。但我不明白如何在一个循环中比较这个

向左 - 日期较少,向右 - 日期较多

 const dateSwitch = (prev: boolean) => {
    let newDate: string = DateTime.fromJSDate(new Date()).startOf("day")
    if (enabledDates.value.length) {
      if (prev) enabledDates.value.forEach((enableDateFromArr,idx) => {
        const enableDate = DateTime.fromISO(enableDateFromArr).startOf("day").toISO()
        const compare = enableDate >= date.value
      }) 
    } 
    }
  }
javascript momentjs luxon
1个回答
0
投票

使用

DateTime.fromISO()
转换所选日期和数组中的日期。然后,迭代日期数组并计算每个日期与所选日期之间的差异。使用
reduce()
,找到差异最小的日期的索引,并返回差异最小的索引处的日期。

const dateSwitch = (prev: boolean) => {
 let newDate: string = DateTime.fromJSDate(new Date()).startOf("day").toISO();
 if (enabledDates.value.length) {
   let selectedDate = DateTime.fromISO(newDate);
   let dates = enabledDates.value.map(date => DateTime.fromISO(date));
   let differences = dates.map(date => selectedDate.diff(date, 'days').days);
   let minIndex = differences.reduce((minIndex, diff, index) => diff < differences[minIndex] ? index : minIndex, 0);
   return dates[minIndex].toISO();
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.