Javascript 如何使用ramda.js计算对象数组中路径的出现次数?
我试图使用Javascript 如何使用ramda.js计算对象数组中路径的出现次数?,javascript,ramda.js,Javascript,Ramda.js,我试图使用ramda.js来计算对象数组中键值对的出现次数,例如: var array = [ {a: {b: 'a'}}, {a: {b: 'a'}}, {a: {b: 'X'}}, {a: 'a'} ] 如果我想计算ramda.js中{a:{b:'a'}}在数组中出现的次数,我会怎么做?你可能不喜欢它,无点函数 R.compose(R.length, R.filter(R.compose( R.equals('a'), R.path(['a', 'b']))))(array
ramda.js
来计算对象数组中键值对的出现次数,例如:
var array = [
{a: {b: 'a'}},
{a: {b: 'a'}},
{a: {b: 'X'}},
{a: 'a'}
]
如果我想计算
ramda.js
中{a:{b:'a'}}
在数组中出现的次数,我会怎么做?你可能不喜欢它,无点函数
R.compose(R.length, R.filter(R.compose( R.equals('a'), R.path(['a', 'b']))))(array)
更新刚刚从斯科特·克里斯托弗的评论中了解到
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)
考虑以下步骤:[1]R.pathEq
检查数组元素是否匹配[2]R.map
检查数组的每个元素,将其转换为true
或false
[3]Number
可以用作从true
转换为1
和false
到0
[4]R.sum
汇总数组中的所有1
请告诉我您是否需要更多帮助,我可以提供完整的解决方案。谢谢,我认为这是一个很好的方法,因为它非常简洁:-)