jaz*_*000 4 arrays typescript angular
有几个基于简单数组的例子,但我有 2 个对象数组,似乎无法让它工作。
getAvailableApplications() : Application[]
{
var list;
if (!this.userSettings)
list = this.applications;
else
list =
this.applications.filter(x=>
this.userSettings.modules.filter(y=>
x.entityId === y.moduleId
));
return list;
}
Run Code Online (Sandbox Code Playgroud)
尽管我在 userSettings.modules 数组中有一个元素,但这总是返回应用程序的完整列表,而不是删除不在 userSetting.modules 数组中的应用程序。
我也尝试在没有 lambda 的情况下重写,但它似乎无法识别模块级 userSettings 变量
this.applications.filter(function (x){
return this.userSettings.filter(function(y){
return x.entityId === y.moduleId;
})
Run Code Online (Sandbox Code Playgroud)
userSettings 被声明为any,但被分配一个值,如
userSettings = {"settings":{"modules":[{"moduleId":"b37f590de59943278e7f9b2137c0c232",
"order":0}]}
Run Code Online (Sandbox Code Playgroud)
应用程序声明如下:
applications : Application[]
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这就是您想要实现的目标,不需要使用两个过滤器。
list = this.applications
.filter(x => this.userSettings.modules.map(y => y.moduleId).includes(x.entityId));
Run Code Online (Sandbox Code Playgroud)
参见示例:
list = this.applications
.filter(x => this.userSettings.modules.map(y => y.moduleId).includes(x.entityId));
Run Code Online (Sandbox Code Playgroud)