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

180
Visualizações
Cómo barajar una matriz anidada con useState

Estoy creando una aplicación de prueba en React Native y quiero cambiar el orden de las preguntas cada vez que alguien elige la prueba . Estaba pensando en usar la reproducción aleatoria de lodash , pero no estoy totalmente seguro de cómo hacerlo para la matriz anidada.

 const getTest = async () => { try { const response = await fetch('https://tgryl.pl/quiz/test/'.concat(route.params.testId)); const json = await response.json(); setData(json); } catch (error) { console.error(error); } }

Estaba pensando en algo como setData(_.shuffle(data.tasks)) ?? No tengo ni idea

El JSON se ve así

ingrese la descripción de la imagen aquí

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

0

Aparentemente, la matriz que se barajará se almacena en la propiedad de tasks del objeto de respuesta, por lo que debe barajar esa matriz y asignarla nuevamente a esa propiedad:

 json.tasks = _.shuffle(json.tasks); setData(json);

Aunque esto muta un objeto y luego lo pasa a setData (que presumiblemente llama a setState / useState , y tal mutación suele ser un olor a código), esto no es un problema aquí, ya que este objeto nunca antes se usó para el estado.

Sin relación, pero no llamaría a esa variable json . Es un objeto JavaScript. JSON es el término para el formato de texto que el método json() recupera de la solicitud y convierte al objeto/matriz.

Utilice un nombre que describa el contenido, como quiz .

about 4 years ago · Juan Pablo Isaza Relatório

0

No tiene matrices anidadas, tiene matrices dentro de un objeto. Esa es la estructura de datos de respuesta que está recibiendo.

Creo que esta es una pregunta divertida, así que aquí implementé una forma alternativa de barajar la matriz de preguntas.

Lógica

Haga un bucle a través de todas las preguntas y dentro de ellas:

  1. Genere un índice aleatorio entre 0 y la longitud de la matriz de preguntas.
  2. Use pop() para eliminar el último elemento de la matriz y devolverlo a la variable Q
  3. Use splice() para agregar la pregunta Q al índice aleatorio generado.

 const arr1 = []; const arr2 = [ {question: 'asd asd 1', answer: 'bla 1', duration: 10}, {question: 'asd asd 2', answer: 'bla 2', duration: 20}, {question: 'asd asd 3', answer: 'bla 3', duration: 15}, {question: 'asd asd 4', answer: 'bla 4', duration: 30} ]; const arr3 = []; const responseObject = { arr1, arr2, arr3 }; let questions = responseObject.arr2; for(const question of questions){ let randIndex = Math.round(Math.random()*(questions.length - 1)); let Q = questions.pop(); questions.splice(randIndex, 0, Q); } console.log(questions)

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