我想使用Ramda.js库来reject数组项目。
有必要删除项目,它有两个等同于0的道具。有没有可能用普通的Ramda.js函数来实现这个without 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
提前感谢您的帮助!
发布于 2019-09-11 17:02:51
在Ramda库中,R.and方法返回一个布尔值,而R.reject方法则希望使用一个迭代值来遍历提供的数组。您可以使用R.allPass方法来实现这一点。此方法接受谓词(如R.propEq)的数组,并返回一个使用" and“逻辑将它们组合在一起的谓词。
R.reject(
R.allPass([
R.propEq('acc', 0),
R.propEq('bal', 0)
])
)(arr);注意:如果你想使用"OR“逻辑,你可以使用R.anyPass。
发布于 2019-09-11 17:08:59
在R.propEq中使用R.allPass/R.both的另一种方法是R.where,它接受一个“规范对象”,如果满足所有属性,则返回true。
R.reject(R.where({
acc: R.equals(0),
bal: R.equals(0)
}))https://stackoverflow.com/questions/57885184
复制相似问题