我有一組復雜的物件,我需要根據多個條件對其進行過濾
var myList= [
{
"UserId": 1,
"UserDetails": {
"Department": [
{
"Name": "dept1"
}
],
"Projects": [
{
"Name": "Project1"
},
{
"Name": "Project2"
}
]
}
},
{
"UserId": 2,
"UserDetails": {
"Department": [
{
"Name": "dept2"
}
],
"Projects": [
{
"Name": "Project3"
},
{
"Name": "Project4"
}
]
}
},
{
"UserId": 3,
"UserDetails": {
"Department": [
{
"Name": "dept3"
}
],
"Projects": [
{
"Name": "Project5"
},
{
"Name": "Project6"
}
]
}
}
]
我想過濾兩個條件,要么部門->名稱是“dept3”,要么存在名稱->“Project3”的專案
var filteredElements=this.myList.filter((x)=>x.UserDetails.filter((y)=>y.Department... ??
如何撰寫代碼來過濾這兩個條件?
uj5u.com熱心網友回復:
為了滿足條件
用戶屬于部門“dept3”
user.UserDetails.Department.some(department => department.Name == "dept3")有一個名為“Project3”的專案
user.UserDetails.Projects.some(project => project.Name == "Project3")
現在把它串聯起來,
var filteredElements = this.myList.filter(user =>
user.UserDetails.Department.some(department => department.Name == "dept3") ||
user.UserDetails.Projects.some(project => project.Name == "Project3"))
uj5u.com熱心網友回復:
myList.filter(i => i.UserDetails.Department.some(d => d.Name === 'dept3') || i.UserDetails.Projects.some(p => p.Name === 'Project3'))
uj5u.com熱心網友回復:
您不能使用過濾器,UserDetails因為它不是陣列而是物件。
應用find上Department,并Projects用或與所要求的條件之間的條件。
var myList= [
{
"UserId": 1,
"UserDetails": {
"Department": [
{
"Name": "dept1"
}
],
"Projects": [
{
"Name": "Project1"
},
{
"Name": "Project2"
}
]
}
},
{
"UserId": 2,
"UserDetails": {
"Department": [
{
"Name": "dept2"
}
],
"Projects": [
{
"Name": "Project3"
},
{
"Name": "Project4"
}
]
}
},
{
"UserId": 3,
"UserDetails": {
"Department": [
{
"Name": "dept3"
}
],
"Projects": [
{
"Name": "Project5"
},
{
"Name": "Project6"
}
]
}
}
]
var filteredElements = myList.filter(x =>x.UserDetails.Department.find(d => d.Name == "dept3") || x.UserDetails.Projects.find(p => p.Name == "Project3"))
console.log(filteredElements)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383219.html
標籤:javascript 数组 json 过滤
上一篇:練習-使用多維陣列和函式查找密碼
