[英]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.