最终R.sum的ramda传感器

问题描述

我想了解Ramda的传感器。这是来自文档的稍微修改的示例:

const numbers = [1,2,3,4];
const isOdd = (x) => x % 2 === 1;
const firstFiveOddTransducer = R.compose(R.filter(isOdd),R.take(5));
R.transduce(firstFiveOddTransducer,R.flip(R.append),[],R.range(0,100)); //=> [ 1,5,7,9 ]

但是,如果我想对结果数组的元素求和怎么办?以下内容(仅将R.sum添加R.compose中)无效:

const firstFiveOddTransducer = R.compose(R.filter(isOdd),R.take(5),R.sum);

解决方法

我会做这样的事情, 只是累积在初始0值之上

const list = [1,2,3,4,5];
const isOdd = R.filter(n => n % 2);

const transducer = R.compose(isOdd);

const result = R.transduce(transducer,R.add,list);

console.log(
  'result',result,);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...