繁体   English   中英

如何删除嵌套数组的元素并保留原始结构?

[英]How can I remove elements of a nested array and retain original structure?

我正在开发一个新的Angular应用程序,我正在构建一个下拉导航。 我目前正在使用Factory来返回控制器中的导航项数组,如下所示:

var sections = this.NavMenusFactory.sections;

菜单结构如下:

在此输入图像描述

我需要遍历数组并删除用户无权访问的任何项目,但也保留原始结构。 这由当前用户和数组对象中的requiredPermissions索引决定。

我可以访问lodash库,所以通过尝试过滤和删除功能一直在玩这个。 没有什么比我需要的更准确。 快速举例说明我是如何尝试的:

var sections = this.NavMenusFactory.sections;
this.dropdownNavItems = [];
 forEach(sections, (section) => {
      if (section.section === 'financials') {
        this.dropdownNavItems = this.dropdownNavItems.concat(section.pages.filter(navitem => {
          // console.log("section", navitem);
          return !navitem.requiredPermissions || this.Permissions.parseAccessByValue(selectedVehicle, navitem.requiredPermissions);
        }));
      }
    });

我无法保留原始结构,就像删除了项目时的图像一样。 我是Javascript的新手,所以一些指导将非常感激。

你的代码看起来对我来说是正确的,我建议你的问题实际上更可能是角度相关的。

假设您正在使用ng-repeat来迭代所有结果,那么您的问题很可能涉及ng-repeat的“track by”部分。 请参阅ng-repeat文档的这一部分您可以尝试使用track by item.name或类似的东西,看看是否能解决您的问题。

暂无
暂无

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

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