rxjs用于映射一个属性但流式处理整个对象的快捷方式

rxjs用于映射一个属性但流式处理整个对象的快捷方式,rxjs,rxjs5,Rxjs,Rxjs5,我想操纵一个对象的属性,但要流式处理整个对象 这种美有捷径吗 Observable.of(data) .map((data) => {data.newDueDate = this.filterDate(data.newDueDate); return data;}) .map((data) => {data.reply = this.generateReply(data.request); return data;}) ... 我正在搜索类似这样的东西,因此我可以以清晰

我想操纵一个对象的属性,但要流式处理整个对象

这种美有捷径吗

Observable.of(data)
  .map((data) => {data.newDueDate = this.filterDate(data.newDueDate); return data;})
  .map((data) => {data.reply = this.generateReply(data.request); return data;})
  ...
我正在搜索类似这样的东西,因此我可以以清晰的原子步骤更改数据对象

您可以使用do:

编辑评论:

Observable.of(data)
  .do(data => data.newDueDate = this.filterDate(data.newDueDate))
  .do(data => data.reply = this.generateReply(data.request))

您可以这样做,也可以创建或拥有自定义操作符,但我认为这太多了。

我认为您可以将两种操作都添加到第一个贴图中,但我同意它看起来有点蹩脚,因此您可以使用Object.assign例如:

Observable.of(data)
  .map(d => Object.assign(d, {
    newDueDate: this.filterDate(data.newDueDate),
    reply: this.generateReply(data.request),
  }))

谢谢,但这不是我想要的。我也可以这样使用映射,并在最后返回数据,但我想要干净的原子步骤来操作对象。我认为你的答案是最接近的。我不需要一路返回对象。第二部分,用于存档的显式运算符默认情况下不在rxjs工具箱中。对不起,我编辑了我的问题,以便更好地解释我要存档的内容。我正在寻找清晰的原子步骤。@fastr.de我认为没有任何操作员可以做到这一点。当然你可以自己写,但为了做到这一点,我建议先升级到RxJS 6
Observable.of(data)
  .do(data => data.newDueDate = this.filterDate(data.newDueDate))
  .do(data => data.reply = this.generateReply(data.request))
Observable.of(data)
  .map(d => Object.assign(d, {
    newDueDate: this.filterDate(data.newDueDate),
    reply: this.generateReply(data.request),
  }))