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

187
Visualizações
array.push parece crear una nueva matriz

Estoy lidiando con la forma en que funciona mi array.push() mientras realizo solicitudes de API paginadas en Node.JS.

Mi API da 10 resultados por solicitud de forma predeterminada. La API proporciona una URL 'siguiente' en el encabezado del enlace si hay más registros para recuperar. Así que estoy usando parse-link-header NPM para obtener este nuevo enlace y realizar solicitudes posteriores en un ciclo do while.

Mi código realiza todas las solicitudes necesarias de envío de tareas para un estudiante, para cada curso en el que está inscrito.

Por ejemplo, el estudiante está matriculado en 3 cursos. Y aquí están:

  • 19 asignaciones en el curso #1
  • 12 asignaciones en el curso #2
  • 0 asignaciones en el curso #3

Debería obtener matrices 3x con la cantidad de elementos en la matriz === la cantidad de tareas en ese curso. P.ej:

 //course 1 ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'] //course 2 ['a','b','c','d','e','f','g','h','i','j','k','l'] //course 3 []

Pero para cada solicitud que se realiza, la divide en 10 registros por matriz (hasta que no hay una página 'siguiente').

Entonces, en cambio, las matrices se ven así cuando se devuelven (simplificado, por ejemplo):

 //course 1 ['a','b','c','d','e','f','g','h','i','j'] ['k','l','m','n','o','p','q','r','s'] //course 2 ['a','b','c','d','e','f','g','h','i','j'] ['k','l'] //course 3 []

Sé que solo estoy haciendo algo tonto, pero actualmente no puedo resolverlo.

Mi código:

 async function getAssignments(courses, student){ //array to hold student assignment submissions const subs = []; let req; let parsed; for (var i=0; i<courses.length; i++){ let url = `https://${auths.canvas.domain}/api/v1/courses/${courses[i].id}/students/submissions?student_ids[]=${student}&include[]=assignment`; do { req = await canvReq(url); subs.push(req.data); parsed = parse(req.headers.link); if (parsed.next){ url = parsed.next.url; } } while (parsed.next); } return subs; } return await getAssignments(courses, student.id);

Muchas gracias por cualquier ayuda que pueda proporcionar.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

subs.push(req.data) debería ser subs.push(...req.data) . El uso del operador de propagación ( ... ) empujará los elementos individuales de req.data (en lugar de la matriz de req.data como un todo) a subs .

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