我在Projet上使用Angular(所以是打字稿)。 我尝试遍历一个对象
我在这样的服务中构建对象:
kafka-console-consumer.bat --bootstrap-server PLAINTEXT://192.168.x.x:9092 --topic test --from-beginning
我用从数据库中获得的这些点填充数组
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
self.print1()
self.print2()
我很乐意以角度的方式取回其他“组件”中的这些点
class Point {
id: number;
name: string;
constructor(id: number, name: string) {
this.id = id;
this.name = name;
}
}
所有这些操作都在points.service.ts
中完成
问题是,
在其他组件中,我将这些点加载到局部变量中
private pointList: Point[] = [];
en然后我尝试像这样遍历它们:
getPointsList() {
return this.pointList;
}
所有这些操作都在另一个文件map.ts中完成
console.log的结果是:
包含我的对象的数组,如:[{{id:1 name:'test'} {id:2 name:'test2'}] 我认为这很正常
一无所有
一无所有
所以我认为它不会进入for循环,但我不明白为什么。
我也尝试过
至pointList = this.pointsService.getPointsList();
,但返回未定义
console.log(this.pointList); // first consoleLog
for (const point of this.pointList) {
console.log(point); // second consoleLog
console.log(point.id); // third consoleLog
}
,但是
没有打印任何东西
这是我的“真实”代码及其在控制台中显示的内容:
有人可以告诉我我在做什么错吗?
感谢
答案 0 :(得分:1)
改为使用dbvalue[0].col1
。
因为迭代对象的所有键都包括他的原型,所以要使用它,您必须记住for (const point of this.pointList) {
。 for的实现是一种捷径。
您也可以使用if (this.pointList.hasOwnProperty(point) {
。就我个人而言,这是我最喜欢的方法,因为您可以使用this.pointList.forEach(point => {...
,.map
或.filter
方法将其加入
答案 1 :(得分:1)
您可能尝试在填充数组之前查看这些值。似乎适用于
console.log(this.pointList);
但这是因为在控制台窗口中显示的数组是动态的:在控制台窗口中展开数组时,它按原样显示值,而不是在执行console.log
语句时显示它们。 / p>
要查看执行console.log
语句时的数组,请使用以下语句:
console.log(JSON.stringify(this.pointList));