这种融合和对的简写是什么?

时间:2017-09-02 14:15:03

标签: javascript ramda.js

R.converge(R.pair, [
  R.filter(x => x & 1),
  R.reject(x => x & 1)
])

是否有更简单的库内方式来进行奇数和偶数的分割?

我特别感兴趣的是Ramda解决方案(而不是创建一个新函数),它接受了除法的函数。

1 个答案:

答案 0 :(得分:1)

更新

以下是愚蠢的。 partition中有一个更好的解决方案,我暂时忘记了。

 partition(n => n & 1, [8, 6, 7, 5, 3, 0, 9]); //=> [[7, 5, 3, 9], [8, 6, 0]]

这也会恢复您的原始订单。

原创,取代,回答

groupBy可能是最接近的。 groupBy(modulo(__, 2))会让你亲近。

但它的输出与你的有些不同。您可以使用values进行组合,以获得与您的版本非常相似的内容:

const parties = compose(values, groupBy(modulo(__, 2)))
parities([8, 6, 7, 5, 3, 0, 9]); //=> [[8, 6, 0], [7, 5, 3, 9]]

您可以在 Ramda Repl 上查看此操作。