我有一个叫myClass
的班级:
export class myClass
{
name: string;
age: number;
city: string;
}
还有另一个名为people
的课程:
export class people
{
name: string;
age: number;
}
在我的component.ts
中,我声明了listMyClass : myClass[];
,它是使用API中的数据从ngOnInit()
填充的。
我想在component.ts
中创建一个遍历listMyClass
的方法,如果城市与伦敦匹配,它将被添加到people
类的列表中。
我认为我可以按照以下方式在ngOnInit()
之外写一些东西(我想要创建的方法):
getLondonPeople(){
for (let item in listMyClass) {
if (item.city == "london") {
//do something
}
}
return listPeople;
}
我在item.city
上收到一条错误消息,内容如下:
“字符串”类型不存在“城市”属性。
如何解决这个问题?
答案 0 :(得分:1)
您会收到此错误,因为使用for-in
并没有真正遍历您感兴趣的事物。如documentation所述:
for...in
和for...of
语句都迭代某些内容。它们之间的主要区别在于它们迭代的内容。
for...in
语句以任意顺序遍历对象的可枚举属性。
for...of
语句迭代可迭代对象定义要迭代的值。
考虑原因,建议您使用for-of
代替for-in
,如下所示:
for (let item of listMyClass) ...
更好,要获取所需的物品,请使用filter
而不是for-loop
,即
this.listMyClass.filter(item => item.city === 'London')
这是我在Stackblitz上为您准备的一个简单示例,以演示建议的解决方案: