如何使用angular和json数据订阅后检索嵌套值?

时间:2017-10-06 15:16:31

标签: json angular typescript

我创建了一个getReports方法,其中我传递了我的web api get方法并能够以json格式获取响应

Step1

    getReports() {
            return this._http.get(this.url)
                .map((response: Response) => response.json())
                .catch(this.handleError);  
        }

第二步

在我的组件构造函数类之后,我正在注入完整的服务,在ngOnInit下我使用this.reports订阅。

constructor(private _reportService: GetReports) {
    }
ngOnInit() {
       this._reportService.getReports().subscribe(reports => this.reports = reports);
}

所以在控制台我得到了127条记录的数组。我的问题是我如何遍历组件中的json数据,以便我将显示我的嵌套值

enter image description here

例如,在扩展数组i时,我将获得格式为

的数据
0
     Key 1:" abdef",
     Key2 :[1,2,3 ]
     key 3:['test','test2']
1   
    Key 1:" check",
     Key2 :[1,2,3 ]
     key 3:['test3','test2']
 2 
     Key 1:" ghef",
     Key2 :[1,2,3 ]
     key 3:['test3','test2']
 ....
 ....
 ....
 127  
     Key 1:" check",
     Key2 :[1,2,3 ]
     key 3:['test4','test3']

我需要检索数组值,这是127个元素的集合,就像我上面提到的第0个元素我有Key 1有值" abdef" ..所以首先我需要在127个元素中找到Key 1的所有不同值,类似地基于键1我需要找到Key 3下的所有不同值

我需要根据key1检索属于Key 3的所有值,并且不会出现重复记录。

我浏览了access key and value of object using *ngFor这样的链接,但这并不符合我的要求。

因此,如果我获得有关如何以角度检索或读取嵌套json数据的链接和响应,那将会很有帮助

1 个答案:

答案 0 :(得分:0)

获取所有不同的密钥

var distinctKyes = reports.map((a) => a.key1).filter((item, pos, arr) => arr.indexOf(item) === pos);

根据key1获取所有key3(值=" abc")

var result = []
myarr.forEach((item) => {
    if(item.key1 === "abc"){
        result = result.concat(item.key3);
    }
})

result = result.filter((item, pos) => result.indexOf(item) === pos);