Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

310
Views
setState, agregar valores a un diccionario?

Estoy tratando de configurar un objeto json con setState, que agrega un nuevo par de valores clave con cada ciclo for.

Eventualmente, el objeto se verá así.

 const data = [ { accuracy: 5, timeTaken: .8 }, { accuracy: -120, timeTaken: .5 }, { accuracy: -170, timeTaken: .5 }, { accuracy: 140, timeTaken: .6}, { accuracy: 150, timeTaken: .7 }, { accuracy: 110, timeTaken: .1}, ];

La función actual se parece un poco a esto.,

 if (overall !=null) { // var percentageCorrect = (100*(LevStein(results[3].question,results[3].answer)/results[3].question.length)) const [TestData, setTestData] = useState({}) for (var l = 0; l < overall.length; l++) { var results = JSON.parse(overall[l].testdetails.result) for (var i = 0; i < results.length; i++) { // setTestData({...x:(100*(LevStein(results[i].question,results[i].answer)/results[i].question.length)),}) console.log("accuracy: ",(100*(LevStein(results[i].question,results[i].answer)/results[i].question.length))," timeTaken: ",results[i].timeTaken) } } // JSON.parse(overall[0].testdetails.result); }

¿Cómo agrego un nuevo valor a TestData para replicar el objeto json anterior?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El gancho useState no se puede llamar condicionalmente, esto rompe las reglas de los ganchos . Debe llamarse en el cuerpo del componente de la función.

Dado que results son una matriz, puede reemplazarlos o agregarlos al estado testData (* que debería ser una matriz, por cierto). Use una actualización de estado funcional para copiar superficialmente el estado anterior y asigne la matriz de results a los valores de objeto que desee.

 const [TestData, setTestData] = useState([]); ... ... if (overall !== null) { overall.forEach(({ testdetails }) => { const results = JSON.parse(testdetails.result); setTestData(data => [ ...data, ...results.map(({ answer, question, timeTaken }) => ({ accuracy: 100 * (LevStein(question, answer) / question.length), timeTaken })) ]); }); }
about 4 years ago · Juan Pablo Isaza Report

0

Puede agregar el objeto de esta manera:

 setTestData([...testData, { new object }])
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!