如何使用2+参数函数以无点样式编写

时间:2017-05-31 09:05:39

标签: javascript functional-programming ramda.js pointfree

我正在尝试实现这个有意义的功能

const getItem = (items, id) => items.find(item => item.id === id);

使用ramda.js进行无点样式。

当我使用这样的东西时:

const getItem = find(propEq('id'));

第一个参数items将传递给find函数,但我们将失去第二个id参数。

问题是,如何以无点样式实现getItem函数?

1 个答案:

答案 0 :(得分:3)

如果您可以自由更改函数的参数顺序,useWith是一个简单的解决方案:

const getItemById = R.useWith(
  R.find,
  [R.propEq('id')]
);

console.log(
  getItemById(
    'b',
    [{ id: 'a' }, { id: 'b' }]
  )
);
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.24.0/ramda.min.js"></script>