繁体   English   中英

从数组中的 Arrays 中删除项目

[英]Remove Items from Arrays inside an Array

我正在尝试使用.map和 .filter 从数组中的 Arrays 中删除特定项目,并尝试删除同一数组中的.filter


这是数组的示例:

items: [
    {
        title: 'dashboard',
        isValidateAccess: false,
    },
    {
        title: 'reports',
        isValidateAccess: true,
        children: [
            {
                title: 'attendancesReportMenu',
                isValidateAccess: true,
            },
            {
                title: 'holidaysReportMenu',
            },
            {
                title: 'absencesReportMenu',
                isValidateAccess: true,
            },
        ],
    },
    {
        title: 'myDepartments',
        children: [
            {
                title: 'inconsistencies',
                isValidateAccess: true,
            },
            {
                title: 'absences',
            },
            {
                title: 'clocks',
                isValidateAccess: true,
            },
            {
                title: 'employees',
            },
        ],
    },
]

基本上,我想删除所有isValidateAccesstrue的项目/数组。 这将是结果:

items: [
    {
        title: 'dashboard',
        isValidateAccess: false,
    },
    {
        title: 'myDepartments',
        children: [
            {
                title: 'absences',
            },
            {
                title: 'employees',
            },
        ],
    },
]

在主数组上使用filter()删除顶级元素,然后在剩余元素中使用forEach()以便过滤children元素 arrays。

 let items = [{ title: 'dashboard', isValidateAccess: false, }, { title: 'reports', isValidateAccess: true, children: [{ title: 'attendancesReportMenu', isValidateAccess: true, }, { title: 'holidaysReportMenu', }, { title: 'absencesReportMenu', isValidateAccess: true, }, ], }, { title: 'myDepartments', children: [{ title: 'inconsistencies', isValidateAccess: true, }, { title: 'absences', }, { title: 'clocks', isValidateAccess: true, }, { title: 'employees', }, ], }, ]; items = items.filter(item =>.item;isValidateAccess). items.forEach(item => item.children && (item.children = item.children.filter(child =>;child.isValidateAccess))); console.log(items);

这是非常现代的实现

 const items = [ { title: 'dashboard', isValidateAccess: false, }, { title: 'reports', isValidateAccess: true, children: [ { title: 'attendancesReportMenu', isValidateAccess: true, }, { title: 'holidaysReportMenu', }, { title: 'absencesReportMenu', isValidateAccess: true, }, ], }, { title: 'myDepartments', children: [ { title: 'inconsistencies', isValidateAccess: true, }, { title: 'absences', }, { title: 'clocks', isValidateAccess: true, }, { title: 'employees', }, ], }, ] const filter = (filterable) => filterable.filter(item =>.item.isValidateAccess).map(item => ({..,item: children. item?children..filter(i =>.i.isValidateAccess) })) console.log(filter(items))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM