如何使用 ramda.js 计算对象数组中路径的出现次数?

How to count occurrences of a path in an array of objects with ramda.js?

我正在尝试使用 ramda.js 来计算对象数组中键值对的出现次数,例如:

var array = [
  {a: {b: 'a'}},
  {a: {b: 'a'}},
  {a: {b: 'X'}},
  {a: 'a'}
]

如果我想统计 ramda.jsarray 中出现 {a: {b: 'a'}} 的次数,我该怎么做?

你可能会讨厌它,pointfree 函数。

R.compose(R.length, R.filter(R.compose( R.equals('a'), R.path(['a', 'b']))))(array)

更新 刚刚从 Scott Christopher 的评论中了解到。

R.compose(R.equals(val), R.Path(p1, p2)) == R.pathEq([p1, p2], val)

函数可以缩短为

R.compose(R.length, R.filter(R.pathEq(['a', 'b'], 'a')))(array)