如何将映射值组合到可观察数组?

MD10

我有一个对象数组,我只需要从每个对象中获取trainingName和numOfLikes。我用map做到了这一点,但是我想在没有Observables的情况下做确切的事情res.map

this.postsService
      .fetchAll()
      .pipe(
        switchMap((res) =>
          of(
            res.map((post) => {
              return { trainingName: (post.trainingID as ITraining).name, numOfLikes: post.numOfLikes };
            })
          )
        )
      )
      .subscribe((res) => {
        this.data = res;
    }

尝试了以下方法:

this.postsService
      .fetchAll()
      .pipe(
        switchMap((res) => from(res)),
        mergeMap((post) => of({ trainingName: (post.trainingID as ITraining).name, numOfLikes: post.numOfLikes })),
        concatMap((res) => of(res)) 
// here I want to wait for all elements of the array to be transformed to the correct format and emit the completed array, but I get them one by one

我应该使用哪个运算符以rxjs的方式执行此操作?

安全先生

下面的示例做了两个非常相似的事情。第一个使用Array#map,第二个使用RxJS#map执行相同的操作。打印2到7之间的数字

from(
  [1,2,3,4,5,6].map(x => x + 1)
).subscribe(console.log);

from([1,2,3,4,5,6]).pipe(
  map(x => x + 1)
).subscribe(console.log);

通常,将数组转换为流然后再返回数组是有点代码异味。

但是,如果您仍然想这样做,则可以执行以下操作:

这个:

this.postsService.fetchAll().pipe(
  map(res => res.map(post => ({ 
    trainingName: (post.trainingID as ITraining).name, 
    numOfLikes: post.numOfLikes 
  })),
).subscribe(res => this.data = res);

变成

this.postsService.fetchAll().pipe(
  switchMap(res => res),
  map(post => ({ 
    trainingName: (post.trainingID as ITraining).name, 
    numOfLikes: post.numOfLikes 
  })),
  toArray()
).subscribe(res => this.data = res);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将可观察的循环结果组合到RxSwift中的数组?

如何将对象值映射到可观察数组

* RxJs *如何将多个ajax组合到一个不需要序列的可观察对象

角度-如何将多个“ valueChanges”可观察值组合为一个

如何将额外的变量组合到数组/方法中?

如何将两个可观察的数组合并为一个数组?

如何将数组的可观察对象转换为可观察对象数组(RxJS)

如何将ngclass绑定到可观察值

如何将两个可观察项转换为具有两个初始可观察值的映射值的另一个可观察对象?

如何映射JavaFX可观察值?

如何将两个值合并/组合到同一数组中的单个键中

如何按可观察值对可观察数组进行排序

如何将2个数组数组组合到对象数组

如何将可观察对象和属性(字段)的数组映射到仅属性?

如何将功能组合内部的突变转换为局部的,不可观察的突变?

RxJS:如何将多个嵌套的可观察对象与缓冲区组合

如何将一个可观察对象映射到另一个

如何将 2 个 NSDictionary Contain 数组组合到一个 NSMutableArray

将JSON映射到Knockout可观察数组

将变化的json数据映射到可观察的数组

如何将具有相同列名的值组合到 R 中的新数据框中?

如何将数据从可观察到的主题推送到组件中的数组?

如何将RXJS可观察流分成相等大小的N个数组?

如何将多个值传递给可观察的角度5?

将数组值组合到可点击的链接

如何将可观察值转换为可能值?

如何将数组中的值映射到对象数组?

Python,如何将整数矩阵组合到列表

如何将可观察数组求和成数字