我正在尝试将以下数组分组为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 } ] ]
答案 0 :(得分:3)
groupBy
接受一个函数,该函数为单个项目生成分组键。 groupWith
接受二进制谓词,指出两个项是否匹配。groupBy
将所有项目收集到单个集合中。 groupWith
仅收集连续的匹配项目。groupBy
返回一个将这些键映射到匹配项列表的对象。 groupWith
返回(再次连续)匹配项的列表列表。这是绊倒你的第二点。您可能需要groupBy
:
R.groupBy(R.prop('dateValue'))(dates)
// or
R.compose(R.values, R.groupBy(R.prop('dateValue')))(dates);
您可以在 Ramda REPL 上看到这一点。