【发布时间】:2021-06-09 07:30:07
【问题描述】:
我正在尝试根据某些条件过滤对象数组。如果我应用单一条件,它会起作用,但如果我应用更多条件,它就不起作用!!。我不明白为什么它不适用于多种条件。下面是我的代码。
const removeItemIfConditationMatch = () => {
let filter = [];
filter = arr.filter(
item => item.id !== myObj.id &&
item.level !== myObj.level &&
item.technology !== myObj.technology &&
item.type !== myObj.type)
console.log(filter)
}
let myObj = {
"questions": [],
"technology": "Can_Js",
"type": "NON_CODE",
"level": "EASY",
"id": 0
}
let arr = [{
"questions": [],
"technology": "Can_Js",
"type": "NON_CODE",
"level": "EASY",
"id": 0
},
{
"questions": [],
"technology": "Network_Simulator",
"type": "NON_CODE",
"level": "EASY",
"id": 1
},
{
"questions": [],
"technology": "Java",
"type": "NON_CODE",
"level": "HIGH",
"id": 0
},
{
"questions": [],
"technology": "Java",
"type": "CODE",
"level": "HIGH",
"id": 1
},
{
"questions": [],
"technology": "React Js",
"type": "NON_CODE",
"level": "MEDIUM",
"id": 1
}
]
removeItemIfConditationMatch()
在上面的代码中,如果我在单一条件下进行过滤,它可以工作,但如果你运行上面的代码,它就不会工作。任何人都知道为什么它在我做错的地方不起作用。任何帮助将不胜感激。
应用我的多重过滤条件后,我期望得到以下结果。
[
{
"questions": [],
"technology": "Network_Simulator",
"type": "NON_CODE",
"level": "EASY",
"id": 1
},
{
"questions": [],
"technology": "Java",
"type": "NON_CODE",
"level": "HIGH",
"id": 0
},
{
"questions": [],
"technology": "Java",
"type": "CODE",
"level": "HIGH",
"id": 1
},
{
"questions": [],
"technology": "React Js",
"type": "NON_CODE",
"level": "MEDIUM",
"id": 1
}
]
简而言之,我期待如果我的条件匹配,然后从数组列表中删除该对象。
【问题讨论】:
标签: javascript ecmascript-6 filter