Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用id为对象内部的两个不同数组应用条件_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 如何使用id为对象内部的两个不同数组应用条件

Javascript 如何使用id为对象内部的两个不同数组应用条件,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,这里是javascript新手,我在名为service\u types和items的对象中有两个不同的数组。在第一个对象service\u type中,我有如下所示的数组项 "service_types": [ {"id": 3,"name": "Engine Oil"}, {"id": 4,"name": "Castrol"},

这里是
javascript
新手,我在名为
service\u types
items
的对象中有两个不同的数组。在第一个对象
service\u type
中,我有如下所示的数组项

 "service_types": [
    {"id": 3,"name": "Engine Oil"},
    {"id": 4,"name": "Castrol"},
    {"id": 53,"name": "Mobil"}
  ],
我还有一个叫做
items
的对象,它有以下数据

"items": [
    {
      "id": 1,"name": "Partsandservices","category_ids": null
    },
    {
      "id": 2,"name": "Partsandservices","category_ids": "3,4,53"
    },
    {
      "id": 3,"name": "Shop","category_ids": null
    }
  ]
我想要实现的目标是,当我从下拉列表中单击
服务类型
名称
时,它应该显示与渲染中的
类别ID
匹配的项目。我无法将条件添加到
service\u type
对象中的
id
items中的
category\u id


如何实现这一点?

首先,如果您按照Jamiec的建议将category_id的结构更改为array,这将是一件好事

我还建议为categories返回一个空数组,而不是null

完成后,选择类别时,可以查询属于该类别的所有产品:

items.filter(item => (item.category_ids || []).includes(selectedCategoryId)
您没有提到代码如何查找实际的下拉选择,因此我假设您已经知道如何从所选类别获取id


如果这个集合越来越大,我建议创建一个映射结构(
key:category,value:item[]
),在这里可以列出一个类别的所有项目。这样可以避免每次更改类别时都查询所有项目。

您可以控制该
项目
对象吗?因为
category\u id
应该是一个数组,而不是逗号分隔的字符串@Jamiec是的,我可以控制它,然后开始将其更改为数组-稍后您会感谢我的