Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

213
Visualizações
Cómo acceder a un objeto individual en una matriz usando Javascript

Hola, he exportado usando datos (colección de vendedores ambulantes ) usando getDocs() de Firebase.

Después de eso, puse los datos de cada vendedor ambulante como un objeto en una matriz llamada allStall , como se muestra en la captura de pantalla del registro de la consola a continuación.

ingrese la descripción de la imagen aquí

Pregunta 1: ¿Cómo accedo a cada objeto individual en mi matriz allStall ? Intento usar .map() para acceder a cada uno de ellos, pero no obtengo nada.

Tenga en cuenta que ya tengo datos dentro de mi matriz allStall , vea la captura de pantalla anterior. [Actualizar] el mapa no funciona en el código a continuación porque el campo es el nombre de la parada y no el nombre de la parada. Sin embargo, debe ser asíncrono + esperar si usa/llama/desde otra función.

Pregunta 2: ¿Por qué hay [[Prototype]]: Array(0) en mi matriz allStall?

 export /*Soln add async*/function getAllStall(){ var allStall = []; try { /*Soln add await */getDocs(collection(db, "hawkers")).then((querySnapshot) => { querySnapshot.forEach((doc) => { var stall = doc.data(); var name = stall.stallname; var category = stall.category; var description = stall.description; var stallData = { stallName:name, stallCategory:category, stallDescription:description }; allStall.push(stallData); });}); console.log(allStall); //Unable to access individual object in Array of objects allStall.map(stall =>{console.log(stall.stallName);});} catch (e) {console.error("Error get all document: ", e);} return allStall; }

En mi archivo js principal, hice lo siguiente:

 useEffect(/*Soln add await*/() => { getAllStall(); /*Soln:replace the statement above with the code below const allStall = await getAllStall(); allStall.map((stall)=>console.log(stall.stallname)); */ } );
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No obtiene nada porque allStall está vacío ya que no está esperando que se cumpla la promesa

prueba esto

 export const getAllStall = () => getDocs(collection(db, "hawkers")) .then((querySnapshot) => querySnapshot.map((doc) => { const {stallName, category, description} = doc.data(); return { stallName:name, stallCategory:category, stallDescription:description }; }); )

intenta cambiar el efecto de uso como este

 useEffect(async () => { const allStats = await getAllStall(); console.log(allStats) allStats.forEach(console.log) } );
about 4 years ago · Juan Pablo Isaza Relatório

0

¡Muchas gracias a R4ncid, has sido una inspiración! ¡Y gracias a todos los que comentaron abajo!

Logré hacerlo con async y await. Última actualización, también descubrí qué está mal con mi código anterior. Comenté la solución en mi pregunta, que es agregar el asíncrono a la función y esperar a getDocs.

Además, el mapa no funciona en el código anterior porque el campo es nombre de puesto, no nombre de puesto. Sin embargo, debe ser asíncrono + esperar si se usa/llama desde otra función.

función auxiliar

 export async function getAllStall(){ const querySnapshot = await getDocs(collection(db, "hawkers")); var allStall = []; querySnapshot.forEach(doc => { var stall = doc.data(); var name = stall.stallname; var category = stall.category; var description = stall.description; var stallData = { stallName:name, stallCategory:category, stallDescription:description }; allStall.push(stall); } ); return allStall; }

Archivo JS principal

 useEffect(async () => { const allStall = await getAllStall(); allStall.map((stall)=>console.log(stall.stallname)); } );

Viva ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda