【发布时间】:2017-11-22 16:19:27
【问题描述】:
RxJS 如何从嵌套的对象数组中获取特定的属性值
const obj = {
name: 'campus',
buildings: [
{
name: 'building',
floors: [
{
name: 'floor'
}
]
}
]
};
有没有办法在 RxJS 中获取名称。基本上我需要输出为 [campus, building, floor]
Observable.of(obj).map((res) => res.name).subscribe((val) => console.log(val));
我知道如何在不使用 RxJS 的情况下做到这一点。但我想知道如何使用 RxJS。 提前致谢
目前我正在做类似下面的事情
const names = [];
names.push(obj.name);
obj.buildings.forEach((building) => {
names.push(building.name);
building.floors.forEach((floor) => {
names.push(floor.name);
});
});
console.log(names);
【问题讨论】:
-
所以您的目标是检查每个对象的“名称”属性并将它们全部放在一个数组中?你能发布没有 rxjs 的情况下你会怎么做吗?
-
“用 RxJS 做这个”有什么好处? RxJS 更适合异步工作而不是同步工作,在我看来这非常同步——你想让它异步吗?
-
@Whymarrh 我想知道在 RxJS 中有没有办法做到这一点,是的,如果有用的话,我想让它异步。
-
您可能对IxJS 感兴趣,因为它是一种支持异步源的编写方式。也就是说,我不认为在 RxJS 中这样做是有用的,因为这里没有什么不同的。如果您想将此操作的结果“转换”为 Observable 以供其他地方使用,您可以在末尾使用
Observable.from(names)。 -
总体而言,反应式文档对于在务实的环境中快速上手没有用处。像这样的问题对于学习响应式编程的实现很有价值。其次,如果反应式编程不是最好的解决方案,那么应该在它和命令式编程之间划清界限——文档(和任何书籍)暗示它是我见过的每个示例中的双面硬币。 @PratapA.K 正在解决我认为的主要障碍。使用响应式,总有上千种方法可以做到,但最终似乎只有 1-3 种方法可以扩展。
标签: angular typescript rxjs rxjs5