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
);
});