从数组 Ramda 中按 id 删除对象

Art*_*hur 3 javascript functional-programming ramda.js

我想使用 Ramda 通过 id 从数组中删除对象。例如:

const arr = [
  {id: '1', name: 'Armin'},
  {id: '2', name: 'Eren'}, <- delete this object
  {id: '3', name: 'Mikasa'}
];
Run Code Online (Sandbox Code Playgroud)

The*_*son 7

您可以使用组合filter函数来使用函数propEq & not

const result = filter(
  compose(
   not,
   propEq('id', 2)
  ),
  array,
)
console.log(result)
Run Code Online (Sandbox Code Playgroud)

  • 我不认为“过滤器+补充(propEq)”将是比使用“拒绝(propEq)”更好的解决方案...... (3认同)

Sky*_*ker 7

您可以使用两者filterreject

R.reject(o => o.id === '2', arr);

R.filter(o => o.id !== '2', arr);
Run Code Online (Sandbox Code Playgroud)


Cha*_*lie 6

您可以使用reject.

reject() 是 filter() 的补充。它排除了谓词返回 true 的可过滤元素。

let res = R.reject(R.propEq('id', '2'))(arr);
Run Code Online (Sandbox Code Playgroud)