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

时间:2017-01-11 00:08:21

标签: javascript angularjs lodash factory-pattern

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

var sections = this.NavMenusFactory.sections;

菜单的结构如下:

enter image description here

我需要遍历数组并删除用户无权访问的任何项目,但也保留原始结构。这取决于当前用户和数组对象中的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的新手,所以非常感谢一些指导。

1 个答案:

答案 0 :(得分:0)

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

假设您使用ng-repeat来迭代所有结果,则可能是您的问题涉及ng-repeat的“跟踪”部分。请参阅this part of the ng-repeat docs您可以尝试使用track by item.name或类似内容,看看是否能解决您的问题。