我有来自http get
的回复{
"parents": [{
"id": 1
, "children": [{
"name": "child1"
}
, {
"name": "child2"
}]
}, {
"id": 2
, "children": [{
"name": "child1"
}]
}]
}
我有这个界面
export interface Child {
parentId: string
, name: string
}
问题
我应该使用哪个地图来获取子项数组(在订阅的响应中),以及父项的名称和ID?
getChildren(): Observable<Child[]> {
return this.http
.get(API_URL)
.//map function;
}
或者至少,告诉我在哪里寻找某种答案
提前致谢。
答案 0 :(得分:1)
您可以使用一个map()
运算符,然后在其中使用Array.forEach()
和Array.map()
:
const Observable = Rx.Observable;
data = {
"parents": [{
"id": 1
, "children": [{
"name": "child1"
}
, {
"name": "child2"
}]
}, {
"id": 2
, "children": [{
"name": "child1"
}]
}]
};
Observable.of(data)
.map(data => {
let results = [];
data['parents'].forEach(item => {
results = results.concat(item['children'].map(child => {
return {
'parentId': item.id,
'name': child.name,
};
}));
});
return results;
})
.subscribe(val => console.log(val));
这将打印以下内容(包含对象作为单个发射的数组):
[ { parentId: 1, name: 'child1' },
{ parentId: 1, name: 'child2' },
{ parentId: 2, name: 'child1' } ]