我想使用 Ramda.js
库拒绝
数组项。
有必要删除项目,该项目有两个等于 0
的 Prop 。
是否可以使用普通的 Ramda.js
函数在没有 lambdas
的情况下做到这一点?
我希望收到名称为 A、B、C
的项目(除了 D
,其中 acc
和 bal
都等于 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/