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

153
Visualizações
Cambiar la clave del objeto javascript al valor de la propiedad

Tengo dos variables como esta, una es una matriz de objetos y otra es un objeto de objetos

 let state_checklist = [ { id: '1', title: 'Q1', question_id: 'CuaQV', }, { id: '2', title: 'Q3', question_id: 'XKVbQ', }, { id: '3', title: 'Q2', question_id: 'zmId1', }, ]; let state_question = { 2: { answer: 'yes', comments: '', question_id: 'CuaQV' }, 3: { answer: 'no', comments: '', question_id: 'zmId1' }, };

Ahora quiero crear una estructura como esta.

 { "zmId1": { "answer": "yes", "comments": "", "question_id": "zmId1", "title": "Q2" }, "CuaQV": { "answer": "no", "comments": "", "question_id": "CuaQV", "title": "Q1" } }

donde la clave debería ser question_id

El código que he intentado generar ese objeto está debajo, aquí no puedo crear el question_id como clave, de lo contrario, todo parece estar bien para mí.

 //var obj = {}; for (var key in state_question) { if (state_question.hasOwnProperty(key)) { //var key = state_question[key]['question_id']; const questionid = state_question[key]['question_id']; const title = state_checklist.find( (q) => q.question_id == questionid ).title; state_question[key]['title'] = title; //obj[key] = state_question[key]; console.log(title); } } console.log(state_question);
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede recorrer su lista de verificación y luego asignar los valores a un objeto y buscar los otros valores de matriz de objetos con lo que existe allí y se perdió en su resultado

 const questions = {}; for (const q of state_checklist) { const answerFound = Object.values(state_question).find(x => q.question_id === x.question_id); if (answerFound) { questions[q.question_id] = { question_id: q.question_id, title: q.title, answer: answerFound.answer, comments: answerFound.comments } } } // Result // { CuaQV: { question_id: 'CuaQV', title: 'Q1', answer: 'yes', comments: '' }, // zmId1: { question_id: 'zmId1', title: 'Q2', answer: 'no', comments: '' } // }
about 4 years ago · Juan Pablo Isaza Relatório

0

Básicamente, una respuesta más corta para usar la función de reduce de Array producida por Object.values(state_question) y componer el objeto (comenzando con {} ) como se muestra a continuación:

 const result = Object.values(state_question).reduce((acc, val) => ({ ...acc, [val.question_id]: { // ...state_checklist.find(item => item.question_id === val.question_id), title: state_checklist.find(item => item.question_id === val.question_id).title, ...val, } }), {}); console.log(result); // { CuaQV: { question_id: 'CuaQV', title: 'Q1', answer: 'yes', comments: '' }, // zmId1: { question_id: 'zmId1', title: 'Q2', answer: 'no', comments: '' } // }
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