我有下面的代码,我想填补id
,所以我想写点东西像这样:ramda findIndex有间隙
const data = [
{ id: 'some-id' },
{ id: 'some-other-id' },
{ id: 'third-id' },
];
const tabIndex = R.findIndex(R.propEq('id', R.__))(data);
所以我可以用它像这样tabIndex('third-id')
,但这不是一个功能。 我对此有什么想法或混淆?
以下工作
const tabIndex = (id) => R.findIndex(R.propEq('id', id))(data);
但我认为,这是R.__
差距的功能点。
'findIndex'对函子一无所知;它只适用于列表(实际上只是密集的数组)。问题在于将参数置于恰当的位置,以便适当调用findIndex和propEq。 –
@ScottSauyet谢谢你的澄清 - 抛开错误的术语,我仍然认为我所说的函数是有意义的,是否有一些“功能”的原因,我只是缺乏词汇或者只是一些尚未实施? – Emissary
用作参数的函数的事情是它们必须具有正确的签名。所以'findIndex'的类型是'::(a - > Boolean) - > [a] - > Number'。在这种情况下,'a'只代表Object。所以传递给'findIndex'的谓词必须具有':: Object - > Boolean'类型。但'propEq'的类型为':: String - > b - > Object - > Boolean'。在我们将'propEq'函数传递给'findIndex'之前,我们必须部分应用'String'和'b'属性,留下一个':: Object - > Boolean'函数。我们可以按照您在这里的建议或我的答案中的任一版本来做到这一点。 (1/2) –