Angular - 将数组复制到建模数组

时间:2017-12-05 13:23:55

标签: arrays angular typescript maping

我需要从接收API Rest的数组中创建自定义数组。我收到这个型号:

export interface AreaEstadistica {
  id_area_estadistica: String;
  nombre: String;      
  id_distrito: String;
  calculos_estadisticos_pt: Array<CalculoEstadistico>;
}

export interface CalculoEstadistico {
  uso: string;
  valor_tipo: number;
  valor_estandar: number;
}

我想创建一个具有相同字段的数组,因为在对象CalculoEstadistico中我可以收到如此多的信息,我需要&#39;标题&#39;对于CalculoEstadistico中的任何注册,如下所示:

export interface AreaEstadistica2 {
  id_area_estadistica: String; //Header from this
  nombre: String;
  id_distrito: String;// To this
  uso: string;      
  valor_tipo: number;
  valor_estandar: number;
}

Angular 5中的服务:

getAreasEstadisticas(): Observable<AreaEstadistica[]> {
    let url: string = this.urlEstadisticas;   
    console.log('URL' + url);
    return this._http.get<AreaEstadistica[]>(url);
  }

我在组件中使用map尝试了它:

    areas: AreaEstadistica[] = [];
    areas2: AreaEstadistica2[] = [];
//...

getAreas() {
    this._EstadisticasService
      .getAreasEstadisticas()
      .subscribe(
        res => {
          this.areas = res;
          this.transformArray();
        },
        err => {
          console.log(err);
          alert('error');
        }
      );
  }
transformArray(){
    this.areas.map(item => {
            return {
               id_area_estadistica: item.id_area_estadistica,
               nombre: item.nombre,           
               id_distrito: item.id_distrito,
               aa_ponencia_total: item.aa_ponencia_total,
               uso: item.calculos_estadisticos_pt[i].uso,                    
               valor_estandar: item.calculos_estadisticos_pt[i].valor_estandar,
               valor_tipo: item.calculos_estadisticos_pt[i].valor_tipo
            };
        }).forEach(item => this.areas2.push(item));
}

但这段代码不起作用。其中一个错误:

  

src / app / estadisticas / estadisticas.component.ts(129,57):错误TS2304:   找不到名字&#39; i&#39;。

有什么想法吗?我不知道如何访问对象CalculoEstadistico中的字段来映射它们:

uso: item.calculos_estadisticos_pt[i].uso,                    
valor_estandar: item.calculos_estadisticos_pt[i].valor_estandar,
valor_tipo: item.calculos_estadisticos_pt[i].valor_tipo

有没有办法将嵌套模型数组复制到另一个模型数组?谢谢!

2 个答案:

答案 0 :(得分:0)

您使用不存在的索引 i

valor_tipo: item.calculos_estadisticos_pt[i].valor_tipo

答案 1 :(得分:0)

看起来您想要在主数组中添加嵌套数组的字段。 例如

arry1 = {
  name: 'suhel',
  id: 1,
  contact : {
    email: 'email',
    number: '123'
  }
}

现在像这样迭代嵌套数组

for(let key of Object.keys(arry1.contact)) {
  arry1[key] = arry1.contact[key];
}

现在,如果需要,请删除联系人字段

delete arry1["contact"];

然后最终结果将是这样的

arry1 = {
  email: "email"
  id: 1
  name: "suhel"
  number: "123"
}