在日期数组中搜索最接近的日期

时间:2018-02-18 20:19:02

标签: javascript arrays

我在javascript中有一个日期数组 我想搜索一个约会,我不希望它在那里 但我希望得到最接近的日期 那怎么能这样呢?

 Connected to 127.0.0.1 9040 
oohlalala

1 个答案:

答案 0 :(得分:0)

一种可能性是将其分解为一些可重复使用的部分。我们需要能够计算两个日期的差异,并且我们需要能够根据某些计算找到数组的最小值(在这种情况下是与目标日期的差异。)

这是一种做法的方法:



const dates = [new Date("2018-02-18T20:24:33.000Z"), new Date("2018-02-18T20:45:02.000Z"), new Date("2018-02-18T21:22:50.000Z"), new Date("2018-02-18T22:06:31.000Z"), new Date("2018-02-18T22:47:18.000Z")]

const timeDiff = (first) => (second) => Math.abs(first - second)

const minBy = (fn, list) => list.reduce(
  ({d, val}, item) => fn(item) < d ? {val: item, d: fn(item)} : {d, val},
  {d: Infinity, val: null}
).val

const closestDate = (dates) => (testDate) => minBy(timeDiff(testDate), dates)

console.log(closestDate(dates)(new Date('2018-02-18T16:52:35')))
&#13;
&#13;
&#13;