[英]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',
},
],
},
]
基本上,我想刪除所有isValidateAccess
為true
的項目/數組。 這將是結果:
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.