我正在为我的应用程序开发一个过滤引擎。现在,我遇到了对象数据之间的迭代问题,我需要根据用户应用的过滤器数组进行检查。最终目标是返回与一个或多个过滤器选项匹配的对象。
这是我的代码:
const Results = () => {
const [dataStored, setDataStored] = useState([])
const filterArray = useSelector(state => state.filterArray);
const doctors = useSelector(state => state.doctors);
// let doctorsResult = doctors.map(doctor => doctor.indexOf(filterArray) !== -1 )
// let doctorsResult = doctors.map(doctor => {for(let key of Object.keys(doctor)){
// if (key === 'price' || key === 'gender' || key === 'language'){
// // setDataStored([...dataStored, doctor[key]])
// console.log("dataStored",doctor[key])}
// // return (dataStored.indexOf(filterArray) !== -1 )
// }})
let doctorsResult = doctors.map(doctor => {
Object.keys(doctor).forEach((key) => {
if (key === 'price' || key === 'gender' || key === 'language') {
setDataStored([...dataStored, doctor[key]])
console.log("dataStored", dataStored)
}
return (dataStored.indexOf(filterArray) !== -1)
})
})
每个对象都有多个属性,但我只需要检查“价格、性别和语言”值。属性并不相等,有些只是字符串,有些是数组。到目前为止,我已经能够使用 for..in 和 forEach 循环对属性进行迭代。我的问题是,我无法比较和返回任何数据,因为它不是数组,因此,indexOf() 给了我一个错误。当我尝试时setDataStored([...dataStored, doctor[key]]),状态进入无限循环。
我对这一切还很陌生。如果有人有更好的方法来实现这一目标,我将非常感激。
编辑:
这是filterArray的形状,它是一个动态过滤器,开始为空,然后填充
万千封印
相关分类