首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Rxjs筛选嵌套集合

使用Rxjs筛选嵌套集合
EN

Stack Overflow用户
提问于 2018-09-11 15:41:30
回答 1查看 1.4K关注 0票数 0

我需要使用Rxjs操作符过滤以下json数据结构,

考虑到下面的例子,我们有酒店列表,每家酒店都是在下面的房间,我们需要所有的酒店都有可用的房间,

因此,请将以下输入视为:

代码语言:javascript
复制
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
           }
       ]
   }
];

所期望的产出如下:

代码语言:javascript
复制
 var availableRooms = [
       {
           "hotel": "hotel 1",
           "rooms": [
               {
                   "name": "room 1",
                   "flexible": true
               }
           ]
       }    
  ];

那么我如何在Rxjs中应用这个呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 15:49:36

你确定我们需要一个RxJx吗?

代码语言:javascript
复制
function isAvailable(room) { return room.flexible };
hotels
  .map(hotel => ({ ...hotel, rooms: hotel.rooms.filter(isAvailable) }))
  .filter(hotel => hotel.rooms.length);

如果hotel一个接一个地进行,那么使用相同的方法,但使用RxJs操作符。

编辑的

使用RxJS的解决方案

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52279643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档