首页 文章

RxJS - 将数组的Observable转换为数组的新Observable

提问于
浏览
1

我有一个oberservable,这是一个数组:

items$: Observable<CarClassification[]>;

我正在尝试将其转换/转换为一个新的Observable,其中包含一个SelectItems数组,用于下拉框 .

get SelectItems(): Observable<SelectItem[]> { ...

然后我可以将其设置为下拉框的数据源,并且,如果项目$中的任何项目被修改,删除或添加了新项目,则SelectItems数组也会更改 . 我遇到的问题是我有几十个需要以这种方式定义的数组(更大对象的标准) . 我尝试过的所有东西,如果有效的话,都太慢了(订阅了observable并推送到一个新的阵列),我正在寻找一种更无缝的方式 .

我是RxJS的新手,我尝试了一些不同的东西,但似乎都没有 . 我搜索的StackOverflow和我想象的一样多 .

CarClassification有两个属性, IdName ,我想制作SelectItem的 valuelabel .

我知道我可以将observable映射到数组:

items$.map((items) => { ...

但是如何正确地迭代项目中的每个项目,并为每个项目返回一个新的SelectItem一直在逃避我 .

1 回答

  • 3

    如果你有一个发射阵列的Observable,你总是可以用 concatAll() 解压缩它,然后再次打包它,例如:

    Observable.of([{...}, {...}, {...}])
      .concatAll() // unpack
      // will emit each {...} as a single value
      .toArray() // pack
    

    但是您根本不需要使用Rx来转换数组:

    items$.map((items: CarClassification[]) => {
      return items.map((item: CarClassification) => new SelectItem(...));
    });
    

    现在你有 Observable<SelectItem[]> .

相关问题