我需要使用Rxjs操作符过滤以下json数据结构,
考虑到下面的例子,我们有酒店列表,每家酒店都是在下面的房间,我们需要所有的酒店都有可用的房间,
因此,请将以下输入视为:
var hotels = [
{
"hotel": "hotel 1",
"rooms": [
{
"name": "room 1",
"flexible": true
},
{
"name": "room 2",
"flexible": false
}
]
},
{
"hotel": "hotel 2",
"rooms": [
{
"name": "room 1",
"flexible": false
},
{
"name": "room 2",
"flexible": false
}
]
}
];
所期望的产出如下:
var availableRooms = [
{
"hotel": "hotel 1",
"rooms": [
{
"name": "room 1",
"flexible": true
}
]
}
];
那么我如何在Rxjs中应用这个呢?
谢谢
发布于 2018-09-11 15:49:36
你确定我们需要一个RxJx吗?
function isAvailable(room) { return room.flexible };
hotels
.map(hotel => ({ ...hotel, rooms: hotel.rooms.filter(isAvailable) }))
.filter(hotel => hotel.rooms.length);如果hotel一个接一个地进行,那么使用相同的方法,但使用RxJs操作符。
编辑的
使用RxJS的解决方案
function isAvailable(room) { return room.flexible };
from(hotels).pipe(
map(hotel => ({ ...hotel, rooms: hotel.rooms.filter(isAvailable) })),
filter(hotel => hotel.rooms.length),
toArray(),
).subscribe(console.log)https://stackoverflow.com/questions/52279643
复制相似问题