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

Gal*_*har 2 javascript ramda.js

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

var array = [
  {a: {b: 'a'}},
  {a: {b: 'a'}},
  {a: {b: 'X'}},
  {a: 'a'}
]
Run Code Online (Sandbox Code Playgroud)

如果我想计算in{a: {b: 'a'}}内出现的次数,我会怎么做?arrayramda.js

qxg*_*qxg 5

你可能讨厌它,pointfree 函数。

R.compose(R.length, R.filter(R.compose( R.equals('a'), R.path(['a', 'b']))))(array)
Run Code Online (Sandbox Code Playgroud)

更新刚刚从 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)
Run Code Online (Sandbox Code Playgroud)