javascript - Observable 的转换

标签 javascript arrays typescript observable reactive

我有一个看起来像这样的数据结构:

 Observable<Array<LineChart>>

由此定义了一个 LineChart

export interface LineChart  {
  name?: null | string;
  series?: null | Array<DateLineChartEntry>;
}

DateLineChartEntry 定义如下:

export interface DateLineChartEntry  {
  name?: string;
  value?: number;
}

其中名称为字符串,其中包含日期。

对于此 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 作为输出)来做到这一点?

预先感谢您的帮助。

最佳答案

您只是在寻找更干净一点的东西吗?如果是这样,请查看一些较新的数组功能,而不是编写 for:

this.data = getObservable({
        body: parameters
    }).pipe(
        map(lca => lca.map(entry => ({
                    name: entry.name,
                    series: entry.series.map(x => ({
                        name: new Date(x.name),
                        value: x.value
                    }))
                }))
            )
        );

特别是 .map:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

关于javascript - Observable 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253147/

相关文章:

javascript - React fetch 返回未定义但在控制台中它返回数组

html - 单击鼠标时将文本与光标一起拖动

angular - 如何在 rollup 中导入 stompjs

javascript - onclick 事件未触发

javascript - 在字符串中查找数组中所有出现的元素

Javascript 字符串替换错误 : Variable is undefined

java - 从 main 中的另一个类方法调用数组

Java 方法 while 循环无休止,即使似乎满足了突破情况

javascript - 使用不同的键对多个数组对象进行排序

node.js - browser.d.ts 对 Edge Web 扩展 API browser.runtime.* 的依赖