rxjs:进行转换,而不是映射

rxjs:进行转换,而不是映射,rxjs,Rxjs,我需要对订阅元素进行转换。因此,我使用转换而不是映射,因为我需要更改每个提要的字段对象值。我的订阅是: this.subscription$ = this.store$ .select(fromRoot.getSubscriptionEntities) .filter(subscription => subscription.status == 'active') .takeUntil(this.componentDestroyed$); 因此,我需要

我需要对订阅元素进行转换。因此,我使用转换而不是映射,因为我需要更改每个提要的字段对象值。我的订阅是:

this.subscription$ = this.store$
      .select(fromRoot.getSubscriptionEntities)
      .filter(subscription => subscription.status == 'active')
      .takeUntil(this.componentDestroyed$);
因此,我需要:

foreach subscription
  subscription.periodEnd = subscription.periodEnd * 1000
我应该在哪里做这个?我尝试将其转换为
do()
,但所有字段都是只读的


有什么想法吗?

使用地图和不变性怎么样

this.store$
  .select(fromRoot.getSubscriptionEntities)
  .filter(subscription => subscription.status == 'active')
  .map(subscription => ({
    ...subscription,
    periodEnd: subscription.periodEnd * 1000
  }))
  .takeUntil(this.componentDestroyed$);

PS:您不需要为您的可观察对象保留订阅,因为您已经订阅了;)

你为什么要修改一个“外来”对象?从现在开始,它是我的。。。。这个问题的意图更像是:通过向非自己创建的类添加随机属性,您想要实现什么?我收到的对象包含以秒为单位的值。我需要以毫秒为单位获取它们。好吧,我想我现在迷路了,但您所指的
订阅
实际上是从商店收到的
数据
,对吗?如果是这种情况,请不要称之为
订阅
,因为实际的
订阅
和收到的
数据
是两个完全不同的东西。很容易将您的“订阅”与实际的
rxjs订阅混为一谈