Angular Typescript使用filter()筛选数组
我有下面的约定列表,我想按专业筛选该列表,即当我输入15时,它返回id为1和2的约定Angular Typescript使用filter()筛选数组,angular,typescript,Angular,Typescript,我有下面的约定列表,我想按专业筛选该列表,即当我输入15时,它返回id为1和2的约定 [ { "id": 1, "typeActivities": [ { "id"=11, "specialitiesId": [10, 15] } ] }, { "id": 2, "typeActivities": [ { "id"=22, "specialitiesId": [
[
{
"id": 1,
"typeActivities": [
{
"id"=11,
"specialitiesId": [10, 15]
}
]
},
{
"id": 2,
"typeActivities": [
{
"id"=22,
"specialitiesId": [10]
},
{
"id"=222,
"specialitiesId": [15]
}
]
},
{
"id": 3,
"typeActivities": [
{
"id"=33,
"specialitiesId": [12]
}
]
}
]
我尝试使用此函数,但没有返回任何结果
let input: number = 15;
let convention: Convention[];
convention = this.conventions.filter(convention => {
let typeActivities: TypeActivity[] = convention.typeActivities.filter(typeActivitiy => {
if (typeActivitiy.specialitiesId) {
return input == typeActivitiy.specialitiesId.find(id => id == input);
}
});
//console.log(convention.typeActivities.map(i => i.id).filter(item => typeActivities.map(i => i.id).indexOf(item) >= 0));
});
对于以下情况非常有用:
let input: number = 15;
let convention: Convention[];
convention = this.conventions.filter(convention =>
convention.typeActivities.some(activity =>
activity.specialitiesId.some(e => e == input)
)
);
convention.typeActivities.some(…)
将使用每个条目调用其谓词,直到其用完(some
返回false
)或谓词返回真实值(some
返回true
);与activity.specialitesid.some(…)
相同
实时JavaScript示例:
const示例={
公约:[
{
“id”:1,
“类型活动”:[
{
“id”:11,
“专业ID”:[10,15]
}
]
},
{
“id”:2,
“类型活动”:[
{
“id”:22,
“专业ID”:[10]
},
{
“id”:222,
“专业ID”:[15]
}
]
},
{
“id”:3,
“类型活动”:[
{
“id”:33,
“专业ID”:[12]
}
]
}
],
查找(输入){
让公约;
约定=this.conventions.filter(约定=>
约定.typeActivities.some(活动=>
activity.specialitesid.some(e=>e==input)
)
);
返回约定;
}
};
log(例如,find(15))代码>
。作为控制台包装器{
最大高度:100%!重要;
}