javascript - JavaScript Filter Func:过滤多个条件(可能为真)
问题描述
可能是我正在寻找的超级简单的东西。
我有一个包含一些信息的对象数组。根据用户操作,我想过滤掉一些对象;
let arr = [
{'num': 1, 'name': 'joe'},
{'num': 2, 'name': 'jane'},
{'num': 3, 'name': 'john'},
{'num': 3, 'name': 'johnny'},
]
我试过的
function filterArr(arr) {
return arr.filter(obj => {
if(obj.num && obj.num !== 1) {
return obj;
}
if(obj.num && obj.num !== 3) {
return obj;
}
})
}
当我运行 filterArr 时,我返回了原始数组,但预期的结果应该只是{'num': 2, 'name': 'jane'},,。我可以在两个嵌套条件中使用 console.log。
将不胜感激基于 2 个条件之一的过滤数组的任何帮助。
解决方案
每一个num
都会通过你的任何if
一个条件,因为宇宙中没有一个数字同时等于 1 和 3**。您可以将&&
条件链接到内部filter
以检查所有条件:
let arr = [
{'num': 1, 'name': 'joe'},
{'num': 2, 'name': 'jane'},
{'num': 3, 'name': 'john'},
{'num': 3, 'name': 'johnny'},
]
let filtered = arr.filter(a => a.num && a.num !== 3 && a.num !== 1)
console.log(filtered)
(**当然,除非它是0
,或任何虚假值。在这种情况下,它们将不满足两个s 的条件)null
undefined
obj.num
if
推荐阅读
- matlab - 洗牌向量元素,使两个相似的元素最多出现两次
- python - 如何使用 K 近邻将标记样本的分布分类?
- json - MongoDB Realm 将 BJSON 转换为 JSON
- javascript - 如何修复“无法编译 src/index.js 'firebase' 未定义 no-undef”?
- swiftui - 一维中的绝对位置
- javascript - axios中如何设置两个拦截器
- jenkins - 如何在 Jenkins 中将 shell 命令作为变量传递
- javascript - 在 Spotify Connect 中使用 JavaScript 重命名 Spotify Web 播放器
- encryption - 当数据来自 socket.io 服务器时,使用 AES-GCM 进行 WebCrypto 解密返回“DOMException”
- python - Django过滤ForeignKey