作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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/
我是一名优秀的程序员,十分优秀!