tengo el siguiente problema: Cuento con un Objeto que consta de length 0 pero si imprimo el objeto si me devuelve resultados. Os dejo una imagen de la consola:
Como podéis ver indica que tiene length == 73 pero si imprimo por consola objeto.length me devuelve 0!
El problema es que cuando ejecuto un console.log( objeto.length ) me devuelve 0. Esto me impide que pueda iterar sobre los valores para operar con ellos.
Os dejo además las 3 funciones que se ven afectadas:
async getToken(){
const response = this.http.post('[url]', this.tokenHeaders );
response.subscribe(data => {
this.token = 'Bearer ' + data['access_token'];
});
await this.getAllApiIDs().then( this.getAllApis() );
}
En la primera función únicamente llamo a las otras dos funciones.
async getAllApiIDs(){
const respuesta : string[] = [];
await this.getAPIs('apis').subscribe( async ( apis: Api[] ) => {
for ( let api of apis ){
respuesta.push( api['id'] );
}
});
this.all_api_id = respuesta;
}
En esta segunda función añado los valores a la variable en cuestión (this.all_api_id), la cual si realizo un console.log me devuelve un resultado, con length 73 pero el proto indica que es un Array(0), como se ve en la imagen
getAllApis(){
const apis: Api[] = [];
for ( var id of this.all_api_id ){
console.log( id );
}
}
Por lo tanto en esta tercera función donde intento iterar sobre los valores del objeto (this.all_api_id) al contar con length == 0 no entra en el bucle for
Si hago un console.log(this.all_api_id.length) siempre me devuelve 0 pero si hago un console.log(this.all_api_id) me imprime un resultado en consola como se ve en la imagen.
La variable this.all_api_id es un objeto de tipo string[]
¿Alguien sabe por qué se comporta de esta manera?
¿Sabéis alguna solución para que pueda iterar sobre this.all_api_id?