【发布时间】:2019-04-21 10:25:31
【问题描述】:
给定这个数组,包含 javascript 对象 (json):
每个对象都有一个bproperty 和一个u 属性,
(每个都包含我在本练习中不关心的其他属性)。
[
{ "b": "A", "u": "F", ... },
{ "b": "M", "u": "T", ... },
{ "b": "A", "u": "F", ... },
{ "b": "M", "u": "T", ... },
{ "b": "M", "u": "T", ... },
{ "b": "X", "u": "Y", ... },
{ "b": "X", "u": "G", ... },
]
我想使用 ramda 来查找所有重复项的集合。 结果应该是这样的。
[
{ "b": "A", "u":"F" },
{ "b": "M", "u":"T" }
]
这两个条目有重复,它们分别在原始列表中重复了 2 次和 3 次。
编辑
我找到了一个使用underscore 的解决方案,它保留了原始数组元素,并将它们完美地拆分为单项和重复项。我更喜欢 ramda.js,并且下划线不只是给出一组重复项 - 根据问题,所以我将问题保持开放,直到有人可以使用 ramda 回答。我将继续使用下划线,直到问题得到解答。
我有一个 repl,它可以找到唯一值...作为开始...
【问题讨论】:
-
您想要完整的副本还是只想要在
b和u上匹配的副本? -
不,只有匹配的字段“b”和“u”——尽管出于兴趣——很高兴知道。我怀疑 R.equals 可能会满足所有人的平等需求。
-
我花了很多时间尝试使用 R.head 和 R.tail 解决这个问题 - 得出的结论是,这是一个棘手的问题......以某种方式迭代唯一列表,并从数据中为每个唯一匹配删除一个匹配似乎是正确的方法......但我还没有设法让组合正确。
标签: javascript ramda.js