Estoy tratando de usar datos de jugadores de una API de estadísticas de fútbol, pero parece que no puedo obtener datos para la temporada actual (que se puede encontrar en el último objeto de la matriz). Por alguna razón, solo obtengo datos para el tercer índice (código a continuación).
.then(data => { //BIO const bio = data['data'][0] const nameValue = bio['fullname'] const imageValue = bio['image_path'] const teamValue = bio['team']['data']['name'] const countryValue = bio['nationality'] const birthdateValue = bio['birthdate'] const heightValue = bio['height'] const positionValue = bio['position']['data']['name'] //STATS const stats = bio['stats']['data']['data'.length - 1] const appearancesValue = stats['appearences']Aquí hay una imagen de los datos JSON a los que intento acceder. En este caso, debería obtener datos de [4] pero los obtengo de [3].
¡Soy bastante inexperto, así que siento que debo estar cometiendo un error tonto en alguna parte! Agradezco cualquier ayuda.
Construyendo sobre la respuesta de Henry Walker.
El uso del nuevo método JavaScript Array.at() le permite ingresar índices tanto positivos como negativos. Este código:
const dataLength = bio.stats.data.length;
const stats = bio.stats.data[dataLength - 1];
Simplemente se traduciría a:
const stats = bio.stats.data.at(-1);
Dándote el último elemento en la matriz.
la 'data'.length en bio['stats']['data']['data'.length - 1] se evaluará como la length de la cadena "data" . por lo que siempre es 4.
Lo más probable es que quisiera la longitud de la matriz, por lo que debería ser
bio['stats']['data'][bio['stats']['data'].length - 1]O podría extraerlo de antemano en una variable, para mayor claridad.
const dataLength = bio['stats']['data'].length; const stats = bio['stats']['data'][dataLength - 1]; Además, dado que está utilizando literales para las propiedades del objeto, no necesita usar la notación [] .
const dataLength = bio.stats.data.length; const stats = bio.stats.data[dataLength - 1]; y también puede hacerlo con el resto del código, para evitar escribir todos los ['..']
Como significa el objeto de datos, tiene 5 objetos, puede este objeto en particular en el tercer lugar como en una matriz, el primer valor se almacena en el índice 0. Intente usar este código para obtener el último objeto
var lastObject = bio.stats.data[bio.stats.data.length-1].player_id