javascript - 通过 Ramda.js 复合 AND 条件拒绝数组项

标签 javascript ramda.js

我想使用 Ramda.js拒绝数组项。

有必要删除项目,该项目有两个等于 0 的 Prop 。 是否可以使用普通的 Ramda.js 函数在没有 lambdas 的情况下做到这一点?

我希望收到名称为 A、B、C 的项目(除了 D,其中 accbal 都等于 0),但我的示例返回 A, C

const arr = [
  {
    name: 'A',
    acc: 1,
    bal: 2,
  },
  {
    name: 'B',
    acc: 3,
    bal: 0,
  },
  {
    name: 'C',
    acc: 0,
    bal: 4,
  },
  {
    name: 'D',
    acc: 0,
    bal: 0,
  }
]

const filteredItems = R.reject(
  R.and(
    R.propEq('acc', 0),
    R.propEq('bal', 0)
  )
)(arr)

这是 Ramda REPL to test my example

提前感谢您的帮助!

最佳答案

在 Ramda 库中,R.and 方法返回一个 bool 值,相比之下,R.reject 方法期望使用一个可迭代对象来循环遍历提供的数组。您可以使用 R.allPass 方法实现此目的。此方法采用谓词数组(如 R.propEq)并返回使用“AND”逻辑组合它们的谓词。

R.reject(
    R.allPass([
        R.propEq('acc', 0),
        R.propEq('bal', 0)
    ])
)(arr);

注意:如果你想使用“或”逻辑,你可以使用R.anyPass代替。

关于javascript - 通过 Ramda.js 复合 AND 条件拒绝数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885184/

相关文章:

java - 在服务器上提交表单之前对密码进行哈希处理

typescript - 如何在 Typescript 中使用 compose?

ramda.js - lambda : Delete object in nested structure

ramda.js - 使用从 ramda 中的原始属性派生的新属性转换对象

javascript - 如何获取给定表单详细信息的嵌套 json 对象?

javascript - Google map v3 - 如何将事件与 Gmap 服务绑定(bind)

javascript - 如何在javascript中获取foreach输入值并将其传递给ajax数据?

javascript - Ramda如何将参数传递给高阶函数?

javascript - 使用 Ramda 将两个数组与两个不同的键组合在一起

javascript - 从字符串到 int 的数组转换会使浏览器崩溃