TypeScript / Angular:在将两个数组连接在一起时的TypeError

时间:2018-05-17 07:33:09

标签: angular typescript

我试图将两个相同类型的数组连接在一起。这两个数组实际上嵌套在“父”数组中。所以,目标是将其扁平化。

这是我正在使用的代码:

ngOnInit() {
    this.Logs.getAllLogs()
      .subscribe(logs => {
        this.Logs = Object.values(logs);
        console.log('First: ', this.Logs[0]);
        console.log('Second: ', this.Logs[1]);
        this.mergedLogs = this.Logs[0].concat(this.Logs[1]);
        console.log('Together: ', this.mergedLogs);
      });   }

但是我收到了这个错误:

  

ERROR TypeError:_this.Logs [0] .concat不是函数

编辑:有些用户建议使用扩展运算符,因此代码更改为:

ngOnInit() {
    this.Logs.getAllLogs()
      .subscribe(logs => {
        this.Logs = Object.values(logs);
        console.log('First: ', this.Logs[0]);
        console.log('Second: ', this.Logs[1]);
        this.mergedLogs = [...this.Logs[0], ...this.Logs[1]];
        console.log('Together: ', this.mergedLogs);
      });
  }

但不知怎的,我仍然得到同样的错误。当我注释掉合并数组的行时,页面刷新正常,因此它不是缓存问题。

3 个答案:

答案 0 :(得分:2)

如果你有一个相同类型的数组,你可以尝试使用扩展运算符...,而不是使用concat()来连接数组。

使用以下代码 -

  this.mergedLogs = [...this.Logs[0],...this.Logs[1]);

有关更多信息和示例,请查看此处

答案 1 :(得分:1)

你可以使用spread运算符,就像这样 - >

this.mergedLogs = [...this.Logs[0], ...this.Logs[1]];

答案 2 :(得分:0)

您犯的第一个非常明显的错误是您在订阅回调中使用this.Logs而不是logs