【问题标题】:Filter list of dates with same days in common using ramda使用 ramda 过滤具有相同日期的日期列表
【发布时间】:2019-05-02 20:06:18
【问题描述】:

我有两个日期列表。我想留下一个列表,其中只包含两个列表共有的日子。为此,我正在考虑使用filterany 来比较两者。

const dates = [
  "2019-05-19T09:00:00.000Z",
  "2019-05-20T17:00:00.000Z",
  "2019-05-21T17:00:00.000Z"
]

const datesToCompare = [
  "2019-05-21T17:00:00.000Z"
]

// when filtered should leave us with:
[
  "2019-05-21T17:00:00.000Z"
]

对于每个项目,我需要使用来自date-fns 的谓词函数isSameDay 来比较它。 (顾名思义,它比较两个日期并判断它们是否在同一天)。

【问题讨论】:

    标签: javascript arrays functional-programming ramda.js


    【解决方案1】:

    你可以使用innerJoin

    获取谓词pred、列表xs和列表ys,并返回一个列表xs',其中包含xs的每个元素,根据pred等于ys的一个或多个元素。

    R.innerJoin(dateFns.isSameDay, dates, datesToCompare);
    

    例子:

    const dates = [
      "2019-05-19T09:00:00.000Z",
      "2019-05-20T17:00:00.000Z",
      "2019-05-21T17:00:00.000Z"
    ]
    
    const datesToCompare = [
      "2019-05-21T17:00:00.000Z"
    ]
    
    console.log(
    
      R.innerJoin(dateFns.isSameDay, dates, datesToCompare)
    
    )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

    【讨论】:

    • 我需要使用一个函数来比较它们。
    • 更新了使用dateFns.isSameDay的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2020-04-16
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多