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

178
Visualizações
JavaScript modifica la matriz de objetos y altera los datos contenidos

Tengo dificultades para formatear algunos datos. Actualmente, recibo datos en la siguiente estructura.

 [ { "q1":"5", "q2":[ "13", "12", ], "q3":"test", } ]

Básicamente, necesito modificar esto o incluso crear un nuevo objeto, que tenga la siguiente estructura.

 [ { id: 1, //q1 answers: [ { answer: '5', }, ], }, { id: 2, //q2 answers: [ { answer: '13', }, { answer: '12', }, ], }, { id: 3, //q3 answers: [ { answer: 'test', }, ], }, ];

Entonces, la identificación en lo anterior se obtendría eliminando la q y obteniendo el número en el primer objeto de datos. Entonces tendría una matriz de respuestas que tendría un objeto para cada respuesta.

He estado intentando esto pero me he perdido. No sé si debo usar bucles, mapas, filtros, etc. Para ser honesto, lo más lejos que he llegado hasta ahora es obtener las claves.

 var modified = data.map(function(item) { return Object.keys(item) })

Creé un JSFiddle donde he estado intentando hacer esto.

¿Hay alguna manera de que pueda obtener los datos que busco?

Muchas gracias

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

0

Utilice la función de mapa.

 const data = { "q1":"5", "q2":[ "13", "12", ], "q3":"test", }; const result = Object.keys(data).map(key => { let item = {id: key.substring(1), answers: []}; if(typeof data[key] === "string") item.answers.push({answer: data[key]}); else item.answers = data[key].map(val => ({answer: val})); return item; }); console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

 const inputData = [ { "q1":"5", "q2":[ "13", "12", ], "q3":"test", } ] function answerMapper(objVal, id){ return Array.isArray(objVal) ? { id, answers: objVal.map(answer => ({ answer }))} : { id, answers: [{answer: objVal }] } } function formatObject(obj){ return Object.keys(obj).map((k, i) => answerMapper(obj[k], i+1)); } const result = inputData.map(obj => formatObject(obj)); // remove flatMap if your inputData has more than one entry console.log(result.flatMap(x => x));

about 4 years ago · Juan Pablo Isaza Relatório

0

vamos a crear una función pura que acepta el objeto en la matriz como tal

 const processObject = obj => Object.keys(obj).map(id => { const answer = obj[id]; const answers = Array.isArray(answer) ? answer : [answer] const answerObjectArray = answers.map(ans => ({ answer: ans })); return { id: +id.substring(1), answers: answerObjectArray } }); const dataArray = [{ "q1": "5", "q2": [ "13", "12", ], "q3": "test", }]; const output = processObject(dataArray[0]); console.log(output);

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