使用 R.groupWith (ramda)

using R.groupWith (ramda)

我正在尝试将以下数组根据 dateValue 分组,但似乎无法正常工作。我在这里错过了什么?

const dates = [
  {"id":83,"dateValue":"2017-05-24"},
  {"id":89,"dateValue":"2017-05-28"},
  {"id":91,"dateValue":"2017-05-25"},
  {"id":78,"dateValue":"2017-05-24"},
  {"id":84,"dateValue":"2017-05-25"}
]

const groups = R.groupWith(R.eqProps('dateValue'),dates)

console.log(groups)
<script src="//cdn.jsdelivr.net/ramda/latest/ramda.min.js"></script>

我添加了一个 link to ramda repl with this code loaded

预期结果:

[ [ { dateValue: "2017-05-24", id: 83 },
    { dateValue: "2017-05-24", id: 78 } ],
  [ { dateValue: "2017-05-28", id: 89 } ],
  [ { dateValue: "2017-05-25", id: 91 } ],
  [ { dateValue: "2017-05-25", id: 84 } ] ]

groupBy and groupWith.

之间有几点不同
  • groupBy 接受一个为单个项目生成分组键的函数。 groupWith 接受表示两个项目是否匹配的二元谓词。
  • groupBy 将所有项目收集到单个集合中。 groupWith 只收集 连续 .
  • 的匹配项
  • groupBy returns 将这些键映射到匹配项列表的对象。 groupWith returns(再次连续)匹配项列表的列表。

是第二点让你误会了。你可能想要 groupBy:

R.groupBy(R.prop('dateValue'))(dates)
// or
R.compose(R.values, R.groupBy(R.prop('dateValue')))(dates);

您可以在 Ramda REPL.

上看到实际效果