angular - 使用类对象数组中的值进行过滤
问题描述
我正在尝试过滤一个类对象数组,其中又嵌套了类对象。我知道这很令人困惑,我将提供一个示例代码:
//class
export class Class1{
id:number;
team: Teams // here another class contains 'id' and 'name'
}
// Assume that the variable this.tmpObj contains array of Class1 objects
tmpObj:Class1[];
所以在这里我只想取没有 team.id 100 的 Class1 对象。
this.tmpObj= this.tmpObj.filter(({ team }) => {
return team.id != 100
})
但是此代码显示 team.id 为空的错误。我尝试了其他一些过滤方式。但同样的错误。任何想法是什么错误。提前致谢。
解决方案
为什么在这里使用一个不需要任何功能的类?TS 接口更适合这里。
interface Class1{
id: number;
team: Teams;
}
interface Teams {
id: number;
name: string;
}
const tmpObj: Class1[] = [ ... ];
const filtered = tmpObj.filter(({team}) => team.id !== 100);
工作示例:游乐场
更新:TS类
如果您坚持使用 TS 类而不是接口,则可以利用 TS参数属性在构造函数中定义和分配成员变量。
class Class2 {
constructor(
private id: number,
private team: TeamClass
) { }
}
class TeamClass {
constructor(
private id: number,
private name: string
) { }
}
const tmpObj2: Class1[] = [ ... ];
const filtered2 = tmpObj.filter(({team}) => team.id !== 100);
console.log(filtered2);
工作示例:游乐场
推荐阅读
- ios - 如何在 iOS 客户端中传递 AWS AppSync 自定义请求标头?
- json - 使用 groovy 将 XML 转换为 Map
- azure-data-factory-2 - 发布 ADFv2 时出错
- python - Selenium - 如何知道下一页是否不存在?
- javascript - 无法从 React js 获取上传的文件以表达 js
- excel - Excel 表格 - 使用 vba 转置
- javascript - 将chrome输出导出到python
- arrays - 如何编写一个函数来返回没有匹配对的数组元素的值?
- r - 在 knitr::kable() 中设置自适应 col.names
- svn - Tortoise SVN 将存储库复制到新的网络驱动器