簡體   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