Arrays 根据类型中的属性数组筛选类型数组
我在一个Angular 9项目(Typescript)中工作 我有一个字符串数组。我还有一个自定义类型的数组 如何筛选自定义类型的数组,使其仅包含那些其属性与字符串数组中的一个字符串匹配的数组。 下面是一些代码来帮助解释:Arrays 根据类型中的属性数组筛选类型数组,arrays,angular,typescript,rxjs,filtering,Arrays,Angular,Typescript,Rxjs,Filtering,我在一个Angular 9项目(Typescript)中工作 我有一个字符串数组。我还有一个自定义类型的数组 如何筛选自定义类型的数组,使其仅包含那些其属性与字符串数组中的一个字符串匹配的数组。 下面是一些代码来帮助解释: //I declare a custom type export interface CustomType { id: string; name: string; } //I declare my arrays customTypesArr: CustomType
//I declare a custom type
export interface CustomType {
id: string;
name: string;
}
//I declare my arrays
customTypesArr: CustomType[] = [
{id: "000", name: "name 1"},
{id: "001", name: "name 2"},
{id: "002", name: "name 3"}
];
customTypesNamesArr: string[] = ["name 3", "name 1"];
现在我想从customTypesArr
创建一个数组,该数组只包含name属性与customTypesNamesArr
中的任何字符串相同的项。
最终结果将是:
myNewCustomTypesArr: CustomType[] = [
{id: "000", name: "name 1"},
{id: "002", name: "name 3"}
];
我想应该是这样的,但我不能完全弄清楚:
customTypesArr.filter(item =>
customTypesNamesArr.forEach(name => {
if (name == item.name) {
return item;
}
})
);
我真的不确定在这个场景中是否应该使用forEach()
任何帮助都将不胜感激。谢谢。您可以使用数组的组合来简化此过程
customTypesArr.filter(item => customTypesNamesArr.includes(item.name));
基本上,只需做一个过滤器,检查每个项目的名称是否包含允许的名称数组
var filtered = customTypesArr.filter(function(item)
{
return customTypesNamesArr.indexOf(item.name) !== -1;
});