RxJS如何从嵌套的对象数组中获取特定的属性值
const obj = {
name: 'campus',
buildings: [
{
name: 'building',
floors: [
{
name: 'floor'
}
]
}
]
};
有没有办法在RxJS中获取名称。基本上我需要输出[校园,建筑,楼层]
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);
答案 0 :(得分:2)
这应该有效:
getNames(obj) {
const names = [];
names.push(obj.name);
obj.buildings.forEach((building) => {
names.push(building.name);
building.floors.forEach((floor) => {
names.push(floor.name);
});
});
return names;
}
Observable.of(obj).map((res) => this.getNames(res)).subscribe((val) => console.log(val));
您正在将一个值更改为另一个,最简单的就是这样。没有一种特殊的反应方式来对单一价值采取行动。反应方法用于随着时间的推移对值流进行操作,因为它代表的是,您在流中的单个值上运行,因此最好将其视为一个而不是跳过箍来尝试以“反应方式”执行操作”。如果你试图从一系列对象中随时间收集“名称”属性,那么这将是一个不同的故事,在这种情况下你可以使用reduce或scan。