我的数据结构与此类似:
let userInfo = [
{
id: 'id1',
users: [
{
name: 'userName1',
job: 'userJob',
},
{
name: 'userName2',
job: 'userJob',
}
]
},
{
id: 'id2',
users: [
{
name: 'userName3',
job: 'userJob',
},
{
name: 'userName4',
job: 'userJob',
}
]
}
]我期望用户使用RxJS5的新的扁平用户流:
{
parent: id, // parent id, where users[] come from...
name: 'userName'
job: 'userJob'
}什么是干净的功能方式来存档这个?谢谢..。
发布于 2017-01-16 11:47:54
最简单的方法就是使用concatMap()将用Rx.Observable.from创建的内部可观察到的内容与用父id更新的用户列表合并。
let userInfo = [
{
id: 'id1',
users: [
{
name: 'userName1',
job: 'userJob',
},
{
name: 'userName2',
job: 'userJob',
}
]
},
{...}
];
let source = Rx.Observable.from(userInfo)
.concatMap(group => {
return Rx.Observable.from(group['users'])
.map(user => {
user['parent'] = group.id;
return user;
});
});
source.subscribe(
res => console.log(res)
);参见现场演示:https://jsbin.com/miximas/2/edit?js,console
已经有很多类似的问题了:
https://stackoverflow.com/questions/41672956
复制相似问题