我需要从接收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
有没有办法将嵌套模型数组复制到另一个模型数组?谢谢!
答案 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"
}