首页 > 解决方案 > 如何在 TypeScript 中遍历这些数据?

问题描述

我需要遍历存储在“testmaps”中的所有对象。

我已经尝试将“testmaps”作为起点进行迭代,但是当我这样做时,我似乎是在迭代字符串而不是映射。因此,我无法访问其中的对象。

JSON

{"testmap1":

[{"name":"testObject1","boolean1":true,"boolean2":true,"boolean3":false,"otherString":"test"},
{"name":"testObject2","boolean1":false,"boolean2":false,"boolean3":false,"otherString":"test2"}],

"testmap2":

[{"name":"testObject3","boolean1":false,"boolean2":false,"boolean3":false,"otherString":"test3"},
{"name":"testObject4","boolean1":false,"boolean2":true,"boolean3":false,"otherString":"test4"}]}

我在数据中读取的 TypeScript:

ngOnInit() {

    this.http.get('http://myURL').subscribe(
      data => {
        this.array = data;
        console.log(this.array);
      },
      (err: HttpErrorResponse) => {
        console.log(err.message);
      }
    );
  }

打字稿;我试图这样迭代:

ngDoCheck(){

    for (let map in this.array) {
      for (let item in map.valueOf){
        console.log(item.otherString);
      }
    }
  }

我试过的循环没有做任何事情。

标签: angulartypescript

解决方案


for (let item in data)用于循环遍历对象中的属性。这将遍历对象属性,并且每次迭代都将返回该对象中的一个键。对于数组,尽管您可以使用forEach()循环遍历数组中的每个元素。

let data = {
  "testmap1":

    [{
        "name": "testObject1",
        "boolean1": true,
        "boolean2": true,
        "boolean3": false,
        "otherString": "test"
      },
      {
        "name": "testObject2",
        "boolean1": false,
        "boolean2": false,
        "boolean3": false,
        "otherString": "test2"
      }
    ],

  "testmap2":

    [{
        "name": "testObject3",
        "boolean1": false,
        "boolean2": false,
        "boolean3": false,
        "otherString": "test3"
      },
      {
        "name": "testObject4",
        "boolean1": false,
        "boolean2": true,
        "boolean3": false,
        "otherString": "test4"
      }
    ]
};

for (let testmap in data) {
  data[testmap].forEach(item => {
    console.log(item.otherString);
  });
}


推荐阅读