,所以我有一些代码,要求使用(输入,输入)调用xprod
,类似于以下内容:
const input = [
{ id: 1, data: 'a' },
{ id: 2, data: 'b' },
];
const product = xprod(input, input);
/*
[
[ { id: 1, data: 'a' }, { id: 1, data: 'a' } ],
[ { id: 1, data: 'a' }, { id: 2, data: 'b' } ],
[ { id: 2, data: 'b' }, { id: 1, data: 'a' } ],
[ { id: 2, data: 'b' }, { id: 2, data: 'b' } ],
]
*/
我想通过将元素的第一个元素与同一元组中的第二个元素进行比较,以过滤上面的列表中的元素。在这种情况下,要删除包含具有相等ID的对象的元组(因此,应该将0和第3元素滤除 - 我知道在这个简化的示例中,我也可以使用严格的平等来过滤,但通常不是这种情况在我实际写的代码中)。
我知道我可以简单地与lambdas完成此操作,但是由于我发现自己在使用RAMDA时经常得到这种数据(元组列表),因此我经常坚持尝试比较一个项目以免费的方式以相同元组中的同一元组中的另一个项目元组。也许这是一个简单并使用lambda的论点,但是我很好奇是否有不同的方法。
以下是包含实现的ramda repl的链接。
一个选项是简单地包装一个函数,该函数期望用 R.apply
元组的两个参数。在您的示例中,可能是部分应用的R.eqProps
。
R.filter(R.apply(R.eqProps('id')), product)