遍历打字稿中的对象数组

时间:2020-03-10 13:33:46

标签: angular typescript loops object iteration

我在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的结果是:

  1. 包含我的对象的数组,如:[{{id:1 name:'test'} {id:2 name:'test2'}] 我认为这很正常

  2. 一无所有

  3. 一无所有


所以我认为它不会进入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 } ,但是 没有打印任何东西


这是我的“真实”代码及其在控制台中显示的内容:

enter image description here enter image description here

有人可以告诉我我在做什么错吗?

感谢

2 个答案:

答案 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));