首页 > 解决方案 > 换能器的组成图和过滤器

问题描述

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?

标签: javascriptramda.js

解决方案


推荐阅读