Javascript 如何使用具有多个值的单个键筛选数组?

Javascript 如何使用具有多个值的单个键筛选数组?,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,const usersData=[ { “计数”:10, “客户列表”:[ { “主要专业”:“多专业玻璃钢”, “primarySpecialtyCode”:“008”, “性别”:“F”, “毕业年”:2001年, “正常办公时间”:对, “延长办公时间”:正确 }, { “初级专业”:“家庭实践”, “primarySpecialtyCode”:“008”, “性别”:“F”, “毕业年”:2001年, “正常办公时间”:对, “延长办公时间”:正确 }, { “初级专业”:“普通医学”,

const usersData=[
{
“计数”:10,
“客户列表”:[
{
“主要专业”:“多专业玻璃钢”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“初级专业”:“家庭实践”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“初级专业”:“普通医学”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“初级专科”:“内科”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“初级专科”:“内科”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“主要专业”:“多专业玻璃钢”,
“primarySpecialtyCode”:“008”,
“性别”:“M”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“主要专业”:“多专业玻璃钢”,
“primarySpecialtyCode”:“008”,
“性别”:“M”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“初级专业”:“家庭实践”,
“primarySpecialtyCode”:“008”,
“性别”:“M”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“主要专业”:“多专业玻璃钢”,
“primarySpecialtyCode”:“008”,
“性别”:“F”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
},
{
“主要专业”:“多专业玻璃钢”,
“primarySpecialtyCode”:“008”,
“性别”:“M”,
“毕业年”:2001年,
“正常办公时间”:对,
“延长办公时间”:正确
}
]
}
]

让filterKeyName=['gender','regularOfficeHours','primarySpeciality'] 让filterValue=['M',true,'Family Practice'] 让filteredProviderData=usersData[0]。customerList.filter(函数(e){ 返回filterKeyName.every(函数(a){ 返回filterValue.includes(e[a]) }) })
console.log(filteredProviderData)
您应该使用当前键及其索引,以便进行所需的比较:

return e[k] === filterValue[i];
const usersData=[{“count”:10,“customerList”:[{“PrimarySpeciality”:“Multi-Speciality Grp”,“primarySpecialtyCode”:“008”,“性别”:“F”,“毕业年份”:2001,“regularOfficeHours”:true,“extendedOfficeHours”:true},{“PrimarySpecialCode”:“家庭实践”,“primarySpecialtyCode”:“008”,“性别”:“F”,“毕业年份”:2001,“正常办公时间”:true,“延长办公时间”:true},{“初级专业”:“普通医学”,“初级专业代码”:“008”,“性别”:“F”,“毕业年份”:2001,“正常办公时间”:true,“延长办公时间”:true},{“初级专业”:“内科”,“初级专业代码”:“008”,“性别”:“F”,“毕业年份”:2001,“正常办公时间”:true,“延长办公时间”:true},{“初级专业”:“内科”,“初级专业代码”:“008”,“性别”:“F”,“毕业年份”:2001,”正常办公时间:true,“延长办公时间”:true},{“主要专业”:“多专业Grp”,“主要专业代码”:“008”,“性别”:“M”,“毕业年份”:2001,“正常办公时间”:true,“延长办公时间”:true},{“主要专业”:“多专业Grp”初级专业代码“:”008“,”性别“:”M“,”毕业年份“:2001,“正常办公时间”:true,“延长办公时间”:true},{”初级专业代码“:”家庭实践“,”初级专业代码“:”008“,”性别“:”M“,”毕业年份“:2001,“正常办公时间”:true,“延长办公时间”“:true},{“主要专业”:“多专业Grp”,“主要专业代码”:“008”,“性别”:“F”,“毕业年份”:2001,“正常办公时间”:true,“延长办公时间”:true},{“主要专业Grp”,“主要专业代码”:“008”,“性别”:“M”,“毕业年份”:2001,“正常办公时间”:真,“延长办公时间”:真}]]

让filterKeyName=['gender','regularOfficeHours','primarySpeciality'] 让filterValue=['M',true,'Family Practice'] 让filteredProviderData=usersData[0]。customerList.filter(函数(e){ 返回filterKeyName.every(函数(k,i){ 返回e[k]==filterValue[i]; }) }) console.log(filteredProviderData);

.as控制台包装{max height:100%!important;top:0;}
这看起来很简单-只需使用您显示的那些值(它只是
.indexOf
存在的“数组中的东西”)在用于确定对象是否匹配的函数中?这应该足以提示您自己编写其余代码。let filterKeyName=['gender','regularOfficeHours','primarySpeciality']let filterValue=['F',true,'Family Practice','Internal Medicine']如果我像这样使用filterValue,则它不进行过滤,应根据filterValue使用关键primarySpeciality和value=[‘家庭实践’、‘内科学’]进行过滤