CodingCarlos / Curso-JS-para-desarrolladores-web_ed10

3 stars 8 forks source link

Coger una propiedad del objeto #19

Open naomidesign opened 6 years ago

naomidesign commented 6 years ago

Hola, parece fácil pero no doy con ello; con la api me devuelve un objeto (es lo que me muestra en el console.log); y lo que quiero coger es la propiedad content.

Te dejo aquí mi código actualizado: https://github.com/naomidesign/fictizia-project

El resultado que me da parece que el nombre del objeto es "0", por lo que he intentado poner apiResult.0.content y mil formas más pero nada :(

¿¿¿¿Qué es????

¡Gracias!

CodingCarlos commented 6 years ago

Buenas!!

Normalmente, cuando el json te muestra números como nombre de las propiedades, el objeto no es un objeto, sino un array.

En este caso, viendo la respuesta con cuidado, fíjate:

[  
    {  
        "ID":2060,
        "title":"Walt Disney",
        "content":"<p>I can never stand still. I must explore and experiment. I am never satisfied with my work. I resent the limitations of my own imagination.<\/p>\n",
        "link":"https:\/\/quotesondesign.com\/walt-disney-2\/"
    }
]

El primer carácter, y el último, no son llaves sino corchetes. Al ser un array, prueba a coger el elemento 0 como un elemento de array en vez de como uno de objeto ;)

naomidesign commented 6 years ago

Gracias por la rapidez! Cada vez que intento meter algo como [{ etc me sale un error de unexpected token, etc. Supongo que porque no lo meto como hay que meter...

He vuelto a actualizar con varios intentos, y cogiendo de referencia una que hicimos en clase en la cual cogía un elemento similar, sólo que ahí al no ser un 0 lo veo mucho más claro....

Gracias de nuevo!

CodingCarlos commented 6 years ago

Usa el punto para coger propiedades de un objeto, y el corchete para coger elementos del array:

// Elementos del array
var arr = ['a', 'b', 'c'];
var a = arr[0];  // 'a'
var b = arr[1];  // 'b'

// Propiedades de objetos
var obj = { a: 3, b: 5, c: 7 };
var a = obj.a  // 3
var b = obj.b. // 5

SI te fijas, estás utilizando ambas formas

var a = respuesta.["0"];. // Esto peta

Si quieres coger elementos de un array, el número debería ir como un número, en vez de como un string, y el punto sobra, porque no es un objeto, sino un array.

Dale otra vuelta y si ves que no, por aquí sigo

naomidesign commented 6 years ago

Resuelto! gracias!!