【发布时间】:2021-10-08 13:51:07
【问题描述】:
我有一个要映射的数据列表,并查看每个单独项中的数组是否包含一组特定的字符串,如果包含,我想将该单独项推送到新数组中。
某些项目可能包含多个值,因此如果需要,我可能需要将此项目推送到多个新数组。
为了让您了解数据,它是一个对象数组,其值如下:
0: {...}
1: {...}
2: {...}
3: {
id: xyz
name: test
tags: ["Mechanical", "Director/Leadership", "Specialist"]
}
我要在其中寻找匹配项的字符串数组称为“标签”
并且我已经在我的状态下设置了一个空数组列表,准备在满足这些标签值之一时将项目推送到其中,如下所示:
const [mechanical, setMechanical] = useState([]);
const [director, setDirector] = useState([]);
const [specialist, setSpecialist] = useState([]);
如何使用 .map() 来遍历我的数据并判断该项目是否包含标签“机械”,将该项目推入机械状态数组?但是如果它还包含“专家”,那么将该项目也推入专家数组吗?等等等等。
(这个数组中有 6 或 7 个字符串,我可以寻找匹配项。
然后我将映射 UI 中的不同状态并渲染这些项目。
【问题讨论】:
-
arr.forEach(el => el.tags.includes('Mechanical') && el.tags.includes('Specialist') ? setSpecialist([...specialist, el]) :null然后arr.forEach(el => el.tags.includes('Mechanical') && !el.tags.includes('Specialist') ? setMechanical([...mechanical, el]) :null或者你可以使用for循环 -
为什么要使用地图?你应该使用 for、foreach 或 for of
-
是的,在这种情况下首选 forEach,因为您不需要新数组
标签: javascript arrays reactjs string function