Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como o processo de requisição e atribuição acontece

A primeira linha do arquivo main.js é let livros = [], ou seja, começa com um array vazio, e futuramente através de uma função async e o uso do fetch(), a gente consegue trazer os dados da API para serem armazenados dentro dessa variável. No entanto, eu observei que o JSON desses dados começa e termina com uma notação de array, dessa forma:

[
    {
        // primeiro objeto (posição de índice 0)
    },
    // outros objetos...
]

Minhas dúvidas:

(1) Como o JSON já começa com um array, não é redundante declarar a variável livros como um array vazio? Porque não posso simplesmente começar com ela nula ou indefinida, e depois adicionar os dados? Ou o contrário, por que não começar o JSON direto com os objetos ao invés de começar com um array?

(2) Quando eu trago esse JSON para dentro desse array, não seria como adicionar um array dentro de outro array?

2 respostas
solução!

Oi, Anael

O JavaScript possui tipagem fraca, o que significa que é possível alterar o tipo de uma variável.

Não está sendo adicionados dados JSON, e sim, sendo atribuído o seu valor à variável 'livros'

Exemplo:


let livros;
// atribuindo outros valores para livros
livros = 1;
livros = [];
livros = [1, 2, 3];
livros = 'olá';

const endpointDaAPI = 'https://guilhermeonrails.github.io/casadocodigo/livros.json';


async function getBuscarLivrosDaAPI()
{
  const res = await fetch(endpointDaAPI);
  const resJson = await res.json();
  livros = resJson; // atrubindo os dados JSON
  console.log(livros);  
}

getBuscarLivrosDaAPI();

Para adicionar dados a uma "array", o método mais usado é o "push":

Entendi, então o lance de declarar let livros = [] não é mandatório, é mais por uma questão de organização e clareza do código, né? Visto que, como você mencionou, se eu quisesse poderia até só declará-la como let livros; (provavelmente resultando em um valor indefinido?) e deixar por aí mesmo até reatribuí-la futuramente com os dados da API em formato de array.