管道ramda中的多个数据

时间:2017-02-04 14:24:56

标签: javascript arrays ramda.js

如何管道多个数据阵列?最终,我希望实现这样的目标:

const data = [{id: 1, data:100}, {id: 2, data: 200}, {id: 3, data: 3000}, ... ]

我尝试了这个,但没有奏效:

pipe(
  map(assoc('data', __, {})),
  map(assoc('id', multiply(100, prop('data', __))))
)(range(1, 1000))

如果方法是使用两个管道,那么必须有一些方法同时管道两个不同的阵列。如何实施?

2 个答案:

答案 0 :(得分:4)

我建议:

R.map(n => ({id: n, data: 100 * n}), R.range(1, 1000))

可以使用无点解决方案,但它并不优雅:

R.map(R.converge(R.merge,
                 [R.objOf('id'),
                  R.compose(R.objOf('data'), R.multiply(100))]),
      R.range(1, 10))

答案 1 :(得分:0)

这是我用无点样式提出的最好的,有点hacky,重复的数字应该与zipObj给出的键数相匹配。在演进

之后,可以使用关联添加额外的键
map(
  pipe(
    repeat(__, 2),
    zipObj(['data', 'id']),
    evolve({
      data: multiply(100)
    })
  )
)(range(1, 1000))