我正在努力处理一个简单的 RxJs 查询,我似乎无法理解它。如果 Observables 被包装在一个对象内,我似乎无法弄清楚如何合并它们。如果我直接从 flatMap 返回 Observable,则此示例将按预期工作,但我还需要输出中的名称。我怎样才能实现这个目标?
我正在使用 RxJS 5.0.0-beta.2
基本数据结构:
var data = [
{
"name": "Test #1",
"users": [
{
"name": "John Doe",
"gender": "male"
},
{
"name": "John Doe",
"gender": "male"
},
{
"name": "Jane Doe",
"gender": "female"
}
]
},
{
"name": "Test #2",
"users": [
{
"name": "John Doe",
"gender": "male"
},
{
"name": "Jane Doe",
"gender": "female"
},
{
"name": "Jane Doe",
"gender": "female"
}
]
}
];
RxJs 功能:
Observable.fromArray(data)
.flatMap(x => {
return Observable.of({
"name": x.name,
"count": Observable.fromArray(x.users)
.filter(x => x.gender == "male")
.count()
})
})
.toArray()
.subscribe(result => {
console.log(result);
});
期望的结果:
result = [
{
"name": "Test #1",
"count": 2
},
{
"name": "Test #2",
"count": 1
}
];
实际结果:
result = [
{
"name": "Test #1",
"count": Observable
},
{
"name": "Test #2",
"count": Observable
}
];
最佳答案
Observable.fromArray(data)
.flatMap(x => {
return Observable.of({
"name": x.name,
"count": x.users
.filter(x => x.gender == "male")
.length
});
})
.toArray()
.subscribe(result => {
console.log(result);
});
关于javascript - RxJs - 具有 Observable 属性的 FlatMap 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36362900/