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