使用Java过滤数组和子数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java过滤数组和子数组相关的知识,希望对你有一定的参考价值。
我正在尝试过滤数组和子数组,但是子数组fil
因此,我试图获取年龄大于18岁的对象,已付款且漫画= 2
这是我的尝试,我不明白为什么它不起作用(ofc我简化了数组和代码)
data = [{
Age: '21',
Details: [{
gender: 'male',
Paid: 100000,
subDetails: [{
comics: 1,
status: 'rookie'
},
{
comics: 2,
status: 'rookie'
}
]
},
{
gender: 'female',
subDetails: [{
comics: 1,
},
{
comics: 2,
}
]
}
]
},
{
Age: '16',
Details: [{
gender: 'female',
Paid: 150000,
subDetails: [{
comics: 1,
status: 'rookie'
},
{
comics: 2,
status: 'rookie'
}
]
}]
}
]
预期结果应该是:
[{
Age: '21',
Details: [{
gender: 'male',
Paid: 100000,
subDetails: [{
comics: 2,
status: 'rookie'
}]
}]
}]
但是我什至无法超越第二个过滤条件
答案
[可能有reduce
和几个filter
:
const data = [{
Age: '21',
Details: [{
gender: 'male',
Paid: 100000,
subDetails: [{
comics: 1,
status: 'rookie'
},
{
comics: 2,
status: 'rookie'
}
]},
{
gender: 'female',
subDetails: [{
comics: 1,
},
{
comics: 2,
}
]}]},
{
Age: '16',
Details: [{
gender: 'female',
Paid: 150000,
subDetails: [{
comics: 1,
status: 'rookie'
},
{
comics: 2,
status: 'rookie'
}]}]}]
const filterData = data => minAge => comicsCount => data.reduce((acc,curr)=>+curr.Age>=minAge?[...acc, ...curr.Details.filter(d=>d.Paid && d.subDetails.filter(sd=>sd.comics===comicsCount))]:acc,[])
console.log(filterData(data)(18)(2))
以上是关于使用Java过滤数组和子数组的主要内容,如果未能解决你的问题,请参考以下文章
嵌套过滤器:$filter 数组,然后是 $filter 子数组