首页 > 解决方案 > 将 observable 转换为数组

问题描述

我想将 observable 转换为表格。我可以通过在零线上搜索来显示一个表格,但我想浏览所有行以检索所有值。如何遍历所有行而不是仅获取第一个值?谢谢你

export class DataComponent implements OnInit {

  constructor(private router: Router,public authService: AuthService,public dataService: DatasService) { }

 HygroS3;
 HygroS4;
 HygroS5;
 date;
 datatodisplay2;
 datatodisplay;
 data1 : any [];
 config1: GanttChartConfig;
 elementId1: string;


ngOnInit() {
    this.datatodisplay = this.dataService.getDatas();
    let interestingFields =['date','HygroS3','HygroS4','HygroS5'];
    this.datatodisplay.subscribe(val => {
     this.HygroS3 = val[0].HygroS3; 
     this.HygroS4 = val[0].HygroS4;
     this.HygroS5 = val[0].HygroS5; 
     this.date = val[0].date; 
     this.data1=[['date','HygroS3','HygroS4','HygroS5'],[this.date,this.HygroS3,this.HygroS4,this.HygroS5]]
     console.log(this.data1);
  });

  this.config1 = new GanttChartConfig(new Date (),0,0,0);
  this.elementId1 = 'myGanttChart'; 
}

我得到这个:

Array(2)
0: (4) ["date", "HygroS3", "HygroS4", "HygroS5"]
1: (4) ["24032019170117", 92, 85, 63]

标签: javascriptangularfirebaseobservable

解决方案


嗯..我不确定我是否过度简化了这种情况,或者我不完全理解你的问题,但假设返回的 observableval是一个对象数组 [{.....}, {...... ...}],并且您希望返回的格式位于数组数组 [[..],[....]] 中。

ngOnInit() { 

  this.datatodisplay.subscribe(val => {
    const headers = ['date','HygroS3','HygroS4','HygroS5'];
    const res = val.map(row => {
      return [row['date'], row['HygroS3'], row['HygroS4'], row['HygroS5']];
    });
    this.data1 = [headers, ...res]
    console.log(this.data1);
  });

}

这将为您提供问题末尾提到的所需格式的数组,标题位于第一行,其他值位于后续行。


推荐阅读