日期 FNS 最接近 returns NaN 的索引

DateFNS closestIndexTo returns NaN

我需要使用 DateFNS v.2.0.1 closestIndexTo 从一组日期中获取最接近的日期。我目前正在返回 NaN。我在这里错过了什么?

(val = 2019-09-01) 
(arrDates = 2019-09-01,2019-09-03,2019-09-03,2019-09-04,2019-09-05,2019-09-05,2019-09-23,2019-10-01,2019-11-18)

getClosestToDate(val,arr) {
  var arrDates = [_.map(arr, 'date')]
  var closestDate = closestIndexTo(parseISO(val), arrDates)
  return closestDate
},

所以基本上日期应该首先是字符串。下一个可能不正确的地方是你使用 [_.map(arr, 'date')] 的地方,它实际上将 map 的结果放入数组中,使其成为双数组。此外,为了将 arr 解析为 Date 对象,您需要将 arr 值映射到 parseISO 函数。所以下面的代码应该可以工作

var closestIndexTo = require('date-fns/closestIndexTo')
var parseISO = require('date-fns/parseISO')
var _ = require('lodash')

val = "2019-10-04"
arrDates = ["2019-09-01","2019-09-03","2019-09-03","2019-09-04","2019-09-05","2019-09-05","2019-09-23","2019-10-01","2019-11-18"]

function getClosestToDate(val, arr) {
  var arrDates = _.map(arr, (a) => parseISO(a))
  var closestDate = closestIndexTo(parseISO(val), arrDates)
  return closestDate
}

console.log("result", getClosestToDate(val, arrDates))

这里是link到repl