我有场景,提供了示例JSON数据:
[{
"name": "Joe",
"age": "28",
"hobby": ["Reading", "Chilling", "Cycling"]
},
{
"name": "Beck",
"age": "25",
"hobby": ["Drinking", "Cycling"]
},
{
"name": "Candace",
"age": "24",
"hobby": ["Reading", "Singing"]
}]
假设上面的数组显示在网页的某些列表中。
我有2(两个)搜索下拉菜单,可以选择多个名称和年龄。
为了搜索爱好,我的代码是(在ReactJS中:]
filteredPersons = this.state.personList.filter( person =>{
return person.hobby.some(v=> filterHobby.indexOf(v) !== -1)
});
是:
personList
是来自上面JSON的数组列表;filterHobby
是来自多个选择的数组列表,例如:如果filterHobby = ["Reading","Singing"]
,它将显示Joe和Candace。问题是,如何选择多项选择年龄?
预期结果:
23-26
仅将显示Beck和Candace>27
仅将显示Joe谢谢您的回答。
您需要对数组[[过滤使用filter
函数。
const persons = [
{
"name": "Joe",
"age": "28",
"hobby": ["Reading", "Chilling", "Cycling"]
},
{
"name": "Beck",
"age": "25",
"hobby": ["Drinking", "Cycling"]
},
{
"name": "Candace",
"age": "24",
"hobby": ["Reading", "Singing"]
}
]
然后我们将过滤该数组:
persons.filter((person) => { return person.age > 27; })
此代码返回我们的信息:Joe
[
{
"name": "Joe",
"age": "28",
"hobby": ["Reading", "Chilling", "Cycling"]
}
]
filteredPersons = this.state.persons.filter(({age}) => {
if(selectedOption1) {
return (age>=23) && (age<=26);
}
if(selectedOption2) {
return (age>27);
}
})