如何使用typescript(Angular2)循环遍历JSON对象

27

我刚开始学习 Angular2,尝试循环遍历一个从 GET 请求返回的 JSON 对象,但是一直无法解决。

我的 JSON 对象:

{
    Results: [{
        Time: "2017-02-11T08:15:01.000+00:00",
        Id: "data-mopdsjkajskda",
        AuthorId: "58fSDNJD"
    }, {
        Time: "2017-03-11T06:23:34.000+00:00",
        Id: "data-2371212hjb1",
        AuthorId: "43555HHHJ"
    }, {
        Time: "2017-04-11T07:05:11.000+00:00",
        Id: "data-kjskdha22112",
        AuthorId: "XDSJKJSDH"
    }]
}

我的Angular脚本的一部分:

interface res {
    Time: string;
    Id: string;
    AuthorId: string;
}
export class AppComponent {
    results: res;
    constructor(private _httpservice: HTTPService) {}
    this._httpservice.getQuery().subscribe(
        data => {
            this.results = data.Results
        },
        error => console.log(error),
        () => console.log('Done')
    );
}

我成功地取回了数据 - 这很好。然而,我想将这些 Id 推入一个数组中。在 JavaScript 中,我会这样做:

var ids = [];

for (i = 0; i < data.Results.length; i++) {
    ids.push(data.Results[i].Id)
}

push操作后的数组:

ids = ['data-mopdsjkajskda', 'data-2371212hjb1', 'data-kjskdha22112'];

我正在努力寻找一种方法来使用Angular2实现相同的结果。非常感谢您的任何帮助!


这应该是一个JavaScript问题。Angular与for循环无关。无论如何,您可以使用这个链接代替。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach?v=example - wannadream
这个答案对我很有帮助。 - Abdu
2个回答

32

假设您从GET请求中获取的json对象看起来像您上面发布的那样,只需执行以下操作:

let list: string[] = [];

json.Results.forEach(element => {
    list.push(element.Id);
});

还是我忽略了什么阻止你这样做的东西吗?


1
太好了,这对我有用。非常感谢。 - AlexisP

27

ECMAScript 6 引入了 let 声明。您可以在 for 语句中使用它。

var ids:string = [];

for(let result of this.results){
   ids.push(result.Id);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接