【发布时间】:2020-04-02 19:24:18
【问题描述】:
我有一个如下所示的数据结构:
Observable<Array<LineChart>>
LineChart 的定义如下
export interface LineChart {
name?: null | string;
series?: null | Array<DateLineChartEntry>;
}
一个 DateLineChartEntry 是这样定义的:
export interface DateLineChartEntry {
name?: string;
value?: number;
}
其中name是字符串,包含日期。
对于我对这个 DataStructure 的后续操作,我需要将 DateLineChartEntry 转换为 sth。像这样:
export interface DateLineChartEntryConverted {
name?: Date;
value?: number;
}
这意味着,我必须像这样映射所有 DateLineChartEntries
DateLineChartEntry => {
name: new Date(name),
value: value
}
我目前的解决方案是这样的:
this.data = getObservable({ body: parameters }).pipe(
map(lca => {
var lcaConverted = [];
for (var lc of lca) {
var name = lc.name
var lcN = {
name: name,
series: []
};
for (var e of lc.series) {
var n = new Date(e.name);
lcN.series.push({
name: n,
value: e.value
});
}
lcaConverted.push(lcN);
}
return lcaConverted;
})
);
这很丑陋,我正在寻找一个“更好”的解决方案。
有没有一种简单的方法可以通过使用初始 Observable(并接收 Observable 作为输出)来做到这一点?
提前感谢您的帮助。
【问题讨论】:
-
到目前为止你尝试了什么?
-
这基本上是我的问题 - 从来没有真正基于“接收某些东西并将其放在某处”的基础上使用可观察(或转换) - 所以我已经在“从哪里开始”失败了。首先方法是使用“管道”,然后在所有数据上使用一些 foreachs 重新创建对象。但似乎根本没有成功。最大的问题:我不知道如何调试我的中间结果。
-
对不起,你的目标我不清楚..你能用你到目前为止尝试的代码更新吗?
-
添加了我当前的(工作)解决方案,这不是很“好”:-)
标签: javascript arrays typescript observable reactive