使用 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
接受一个为单个项目生成分组键的函数。 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.
上看到实际效果
我正在尝试将以下数组根据 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
接受一个为单个项目生成分组键的函数。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.
上看到实际效果