Angular 2 - 如何将结果映射到数组中

时间:2018-03-08 21:56:35

标签: angular

我正在使用下面的代码尝试将包含许多列的数组转换为包含2列的数组。

我可以看到当我快速观察res包含一个名为result的数组时,但我没有映射到新数组。

loadData() {
    this.selectprojectfromfavoritesService.getFavorites()
        .subscribe(res => {
            //this.TempArray.push({ label: res.result.projectNumber,   value: res.result.tzeroprojectCaptureId })
            const TempArray = res.result.map(result => { return { label: result.projectNumber, value: result.tzeroprojectCaptureId }; });
            this.values = this.TempArray ; 
        });

1 个答案:

答案 0 :(得分:1)

在访问TempArray值时,您犯了一个错误。它是块作用域变量(没有类属性),因此您不应使用this关键字。这是工作示例:

loadData() {
  this.selectprojectfromfavoritesService.getFavorites()
    .subscribe(res => {
      const TempArray = res.result.map(result => { return { label: result.projectNumber, value: result.tzeroprojectCaptureId }; });
      this.values = TempArray;
    });
}
BTW:如果您使用RxJS map运算符来实现这一点,那就更好了(关于数据流管理和优化):

loadData() {
  this.selectprojectfromfavoritesService.getFavorites()
    .map(res => {
      return res.result.map(result => {
        return { label: result.projectNumber, value: result.tzeroprojectCaptureId };
      })
    })
    .subscribe(data => this.values = data)
}