Ecmascript 6 ES6:如何使用映射过滤状态数组

Ecmascript 6 ES6:如何使用映射过滤状态数组,ecmascript-6,Ecmascript 6,我有一个名为结构的状态数组: var structure = [ { id: 0, label: "Dashboard", link: "/test/dashboard", icon: <HomeIcon /> }, { id: 1, label: "Test1", link: "/test1", icon: <InboxIcon /&

我有一个名为
结构的状态数组

var structure = [
    { id: 0, label: "Dashboard", link: "/test/dashboard", icon: <HomeIcon /> },
    {
      id: 1,
      label: "Test1",
      link: "/test1",
      icon: <InboxIcon />,
    },
    {
      id: 2,
      label: "Test2",
      link: "/test2",
      icon: <PresentToAllIcon />,
    },
    { id: 3, type: "divider" },
    {
      id: 4,
      label: "Test3",
      link: "/test3",
      icon: <ListAltIcon />,
      children: [
        {
          label: "Test4",
          link: "/test4",
          icon: <LanguageIcon />,
        },
        {
          label: "Test5",
          link: "/test5",
          icon: <ListIcon />,
        },
      ],
    },
    {
      id: 5,
      label: "Test6",
      link: "/test6",
      icon: <DescriptionIcon />,
    },
    {
      id: 6,
      label: "Test7",
      link: "/test7",
      icon: <AccountBalanceWallet />,
      children: [
        {
          label: "Test8",
          link: "/test8",
          icon: <FaceIcon />,
        },
        {
          label: "Test9",
          link: "/test9",
          icon: <TransferWithinAStationIcon />,
        },
        {
          label: "Test10",
          link: "/test10",
          icon: (
            <Avatar alt="Test" src={testlogo} className={classes.small} />
          ),
        },
        {
          label: "Test11",
          link: "/test11",
          icon: <PeopleAlt />,
        },
      ],
    },
    {
      id: 7,
      label: "Test12",
      link: "/test12",
      icon: <EditIcon />,
    },
  ];
到目前为止我所做的是

modules.forEach((modulesMap) => {
    structureNew = structure.filter(
      (structureFiltered) => structureFiltered.label == modulesMap
    );
  });
有人知道如何正确地做到这一点吗?我的代码遇到的问题是它覆盖或替换了当前变量
structurew

我希望它也被附加到一个状态数组中,这样它看起来有点像
结构

试试这个,我刚刚对你的代码做了一些小改动

var结构=[
{id:0,标签:“仪表板”,链接:“/cpex/Dashboard”,图标:''},
{
id:1,
标签:“向内”,
链接:“/cpex/intrown”,
图标:“”,
},
{
id:2,
标签:“外向”,
链接:“/cpex/EXPORT”,
图标:“”,
},
{id:3,键入:“分隔符”},
{
id:4,
标签:“证明清单”,
链接:“/cpex/prooflist”,
图标:“”,
儿童:[
{
标签:“校样网”,
链接:“/cpex/prooflist/web”,
图标:“”,
},
{
标签:“证明他人”,
链接:“/cpex/prooflist/others”,
图标:“”,
},
],
},
{
id:5,
标签:“杂项”,
链接:“/cpex/misc”,
图标:“”,
},
{
id:6,
标签:“RPS”,
链接:“/cpex/rps”,
图标:“”,
儿童:[
{
标签:“客户端维护”,
链接:“/cpex/rps/clientmaintenance”,
图标:“”,
},
{
标签:“过程SFTP”,
链接:“/cpex/rps/sftp”,
图标:“”,
},
{
标签:“处理Pesone”,
链接:“/cpex/rps/pesonet”,
图标:(
''
),
},
{
标签:“覆盖注册”,
链接:“/cpex/rps/OverrideRollment”,
图标:“”,
},
],
},
{
id:7,
标签:“消息转换器”,
链接:“/cpex/message”,
图标:“”,
},
];
变量模块=[“杂项”,“消息转换器”]
var structureNew=[]
modules.forEach((modulemap,i)=>{
设arrs=structure.filter(
(structureFiltered)=>structureFiltered.label==模块映射
);
structureNew=structureNew.concat(…arrs)
});
log('RESULT:'+JSON.stringify(structureNew))

调试器
我刚刚注意到,结果创建了两个独立的数组。如何再次修改它,以便只创建一个对象数组?谢谢我刚对解决方案做了一些更改,请检查谢谢!还尝试了另一种方法,即使用
.flat()
modules.forEach((modulesMap) => {
    structureNew = structure.filter(
      (structureFiltered) => structureFiltered.label == modulesMap
    );
  });