javascript - 换能器的组成图和过滤器
问题描述
function add1(v) {
return v + 1;
}
function isOdd(v) {
return v % 2 == 1;
}
function sum(total, v) {
return total + v;
}
const list = [1, 3, 4, 6, 9, 12, 13, 16, 21];
const list2 = list.map(add1).filter(isOdd).reduce(sum);
// 42
const transducer = R.compose(R.map(add1), R.filter(isOdd));
const list3 = R.transduce(transducer, sum, 0, list);
// 42
const transducer2 = R.compose(R.filter(isOdd), R.map(add1));
const list4 = R.transduce(transducer2, sum, 0, list);
// 52
我想转换映射、过滤和减少。(清单2)
如果compose是从右到左的,为什么transducer2不会导致42?
解决方案
推荐阅读
- spring - @WithMockUser 从静态枚举或字符串中读取值
- javascript - 如何在不知道其索引的情况下从数组中取出一个对象,只知道“键”名称
- c - 一元'*'的无效类型参数(有int)
- python - SyntaxError:Linux 中 Jupyter Notebook 上的语法无效
- python - Hist2D 的圆形框架?
- apache-spark - 在 Spark Sql 中使用 unix_timestamp 验证传入日期到当前月份
- python - 尝试 pip 安装时出现 OSError
- html - 最新的 Google 脚本错误 - 从 text/html 到 application/pdf 的转换失败
- ruby-on-rails - Rails 6.1 使用 Image Magick 导致 Backing store not supported 错误
- r - 如何修复此直方图(帖子中的图像和详细信息)?