rxjs5 扁平化进阶示例
Advanced example of rxjs5 flattening
我有类似的数据结构:
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'
}
归档此内容的简洁实用方法是什么?谢谢...
最简单的方法就是使用 concatMap()
将使用 Rx.Observable.from
创建的内部 Observable 与使用其父 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
已经有很多类似的问题了:
RxJS: JSON data with an array, processing each item further in the stream
我有类似的数据结构:
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'
}
归档此内容的简洁实用方法是什么?谢谢...
最简单的方法就是使用 concatMap()
将使用 Rx.Observable.from
创建的内部 Observable 与使用其父 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
已经有很多类似的问题了:
RxJS: JSON data with an array, processing each item further in the stream