Ang*_*arM 3 javascript rxjs typescript angular
我的名为“ getList ”的服务返回一个项目列表。我想遍历项目列表并格式化日期。然后返回格式化的数组。
我目前的尝试没有返回数组中的项目,因为我使用 flatMap 来循环地图中的项目。
我正在使用 angular6 和 rxjs。
我的尝试:
this.list$ = this.service.getList()
.pipe(
flatMap(response => response.items),
map(item => {
item.date = moment(item.date).format('YYYY-MM-DD').toString();
return item;
})
);
Run Code Online (Sandbox Code Playgroud)
您可以简单地toArray()在管道末端添加
this.list$ = this.service.getList()
.pipe(
mergeMap(response => response.items),
map(item => {
item.date = moment(item.date).format('YYYY-MM-DD').toString();
return item;
}),
toArray()
)
Run Code Online (Sandbox Code Playgroud)
可能更好的方法是稍微重构一下您的代码,使用 Observablemap运算符而不是flatMap(aka mergeMap),并在其中使用 Arraymap方法进行格式化。换句话说,像
pipe(
map(response => response.items.map(item => {
item.date = moment(item.date).format('YYYY-MM-DD').toString();
return item;
}))
)
Run Code Online (Sandbox Code Playgroud)
第二种方法避免了 Array 的展开(在您使用的第一个解决方案中flatMap)以及随后对 Array 的重新创建,或者至少将此逻辑限制map在 Array的方法中
| 归档时间: |
|
| 查看次数: |
11955 次 |
| 最近记录: |