Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
Iterar sobre un objeto de objetos e insertar un par de valores clave en cada objeto

Estoy tratando de iterar sobre un objeto que tiene muchos objetos más pequeños dentro. Quiero insertar condicionalmente un par de valores clave en cada uno de esos objetos más pequeños, por ejemplo:

 const answers = { "question1": { answer: "Poor", metric: "focus" }, "question2": { answer: {agree: "yes", duration: "10"} metric: "exercise" } }

Entonces, digamos que la respuesta en la pregunta 1 puede ser mala, buena o excelente, siendo mala una puntuación de 1, buena una puntuación de 5 y excelente una puntuación de 10. Dependiendo de la respuesta en la pregunta 1, me gustaría agregar una clave. par de valores como puntaje: 1 en el objeto question1

Luego, para la pregunta 2, observamos la duración y una duración de 10 nos da una puntuación de 10, por lo que insertamos el par de valores clave como puntuación: 10

Entonces, al final, quiero devolver un objeto que se parezca a:

 newAnswers = { "question1": { answer: "Poor", metric: "focus", score: 1 }, "question2": { answer: {agree: "yes", duration: "10"} metric: "exercise", score: 10 } }

En este ejemplo, muestro solo dos preguntas para simplificar, pero en realidad podrían ser muchas, y la misma lógica se aplicará a todas las demás preguntas.

Gracias por adelantado

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Básicamente, lo que necesitas es una lógica de bucle.

Algo como esto ayudará.

Lógica

  • Bucle a través de las entradas en el objeto
  • Verifica el tipo de clave de answer en cada objeto
  • Si el tipo es una cadena, haga un mapeo entre las opciones "poor", "good", "excellent" .
  • Si es su objeto comprobar la vigencia de la duration y asignarla a la partitura.

violín de trabajo

 const answers = { "question1": { answer: "Poor", metric: "focus" }, "question2": { answer: {agree: "yes", duration: "10"}, metric: "exercise" } }; Object.entries(answers).forEach((item) => { const answer = item[1].answer; switch (typeof answer) { case "string": console.log(answer); const answerOptions = ["poor", "good", "excellent"]; const scoreOptions = [1, 5, 10]; const index = answerOptions.indexOf(answer.toLowerCase()); if(index !== -1) { item[1].score = scoreOptions[index]; } break; case "object": if (answer.duration && !isNaN(answer.duration)) { item[1].score = +answer.duration; } break; } }); console.log(answers)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si entiendo su pregunta correctamente, la pregunta es cómo insertar un nuevo atributo para cada objeto JSON. Si es el caso, puede hacer lo siguiente.

 answers["question1"]["score"] = 1;

Descuidando la verificación condicional de su lógica (es decir, la declaración condicional), la iteración podría ser:

 $.each(answers, (q) => { q["score"] = x; }

Cómo probarlo con Google Chrome Console

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda