在数组内过滤数组

时间:2018-09-11 17:39:16

标签: javascript arrays angularjs data-structures

我希望您能在此方面帮助我...我正在使用AngularJS =>

在MongoDB中发送查询之前,我必须过滤一个数组,所有值都来自ng-model,并且它是在提交表单时创建的,但是在发送查询之前,我必须过滤该数组,所以我可以丢弃未定义的值, 结构如下:

this.permision = [
    {
       title: 'Archivo',
       submenu: [this.menu.productCatalog, this.menu.providers]
    },
    {
       title: 'Usuarios',
       submenu: [this.menu.users, this.menu.roles]
    },
    {
        title: 'Presupuesto',
        submenu: [this.menu.invoiceLog, this.menu.requestLog, 
        this.menu.creditLog, this.menu.reportLog]
    },
    {
         title: 'Requerimientos',
         submenu: [this.menu.dps1f1, this.menu.catalog,
         this.menu.consolidate, this.menu.expenses,
         this.menu.purchaseGeneration, 
         this.menu.purchaseTracking,
         this.menu.circuits]
   },
   {
         title: 'Operaciones',
         submenu: [this.menu.account, this.menu.loadPay, 
         this.menu.accountStatus]
   },
   {
         title: 'Graficos',
         submenu: [this.menu.importFile]
   },
   {
         title: 'Cuenta Corriente',
         submenu: [this.menu.credit, this.menu.rates]
   },
];

在发送查询之前,如何访问子菜单数组并对其进行过滤?

这是我发送查询时得到的答案:

{submenu:["DPS1F1", undefined, undefined, undefined, undefined, undefined, undefined] title : "Requerimientos"}

因此,所有未定义的值都必须删除,但它们在数组内部的深处。

Array.filter()似乎不起作用,并且如果我尝试让indexOf()使用Splice()似乎也不起作用?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用underscorejs

this.permision.map((e)=>{
   e.submenu = _.compact(e.submenu);
});

紧凑 _.compact(列表) 返回删除了所有虚假值的列表的副本。在JavaScript中,false,null,0,“”,undefined和NaN都是虚假的。

underscorejs

相关问题