【发布时间】:2021-12-26 08:29:54
【问题描述】:
我有一条处于“serviceProviders”状态的数据,它保存数据如下:
[
{
"id": 1,
"name": "Mental Wellness",
"services": [
{
"name": "Footcare & more",
"serviceType": "Footcare",
"location": {
"lat": 43.65040363335024,
"lng": -79.38396226829892
}
},
{
"name": "Brain Wellnes",
"serviceType": "Mental",
"location": {
"lat": 43.655931348619475,
"lng": -79.37928150811159
}
},
{
"name": "Physical service",
"serviceType": "Physical",
"location": {
"lat": 43.70312522921196,
"lng": -79.34393786935266
}
}
]
}
]
我想编写一个函数,该函数基于将 serviceType 与其他变量匹配来过滤嵌套数组(服务),并返回带有更新后的服务数组的整个对象并设置新状态。
类似的东西:
const filter = () => {
serviceProviders.map((provider) => {
const filtered = provider.services.filter((service) => service.serviceType === 'Mental')
setServiceProviders(serviceProviders => [...serviceProviders, serviceProviders.services = filtered ])
})
}
应该返回:
[
{
"id": 1,
"name": "Mental Wellness",
"services": [
{
"name": "Brain Wellnes",
"serviceType": "Mental",
"location": {
"lat": 43.655931348619475,
"lng": -79.37928150811159
}
]
}
]
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
不明白有什么不清楚的地方?用户将拥有一组 serviceTypePreferences,它们将针对 serviceTypes 进行测试并查找匹配项。无论如何,功能不会改变
-
假设有多个顶级提供者,其中一些没有任何匹配的服务......结果中的那些顶级对象会发生什么
-
总是可以检查的。如果我无法让查询工作,我什至无法做到这一点。这也是为什么我想要一个包含所有内容的状态,以及一个包含过滤结果(如果有)的状态。
-
我只是在问会发生什么?实际上只有两个选择;完全过滤掉那些顶级对象或将它们包含在空的
services数组中 -
所以最好如果没有匹配项则返回原始服务数组
标签: arrays reactjs filter use-state