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

102
Views
How do i spread the objects inside an array of objects?

Below I added some details about the original data and the expected output also added the code I tried.

The original data I have

original_data = [
      {
        question_name: "What is this question for?",
        description: "This is a description",
        type: "Multi choice",
        answers: [
          {
            option: "opt1",
            score: 2,
          },
          {
            option: "opt2",
            score: 4,
          },
          {
            option: "opt3",
            score: 5,
          },
        ],
      },
    ];

expected Output

expected_output = {
  Question: "What is this question for?",
  Description: "This is a description",
  Type: "Multi choice",
  option: "opt1",
  score: 2,
  option1: "opt2",
  score1: 4,
  option2: "opt3",
  score2: 5,
};

The Code I tried

const updated_qstnData = original_data.map((d) => {
  const {
    question_name,
    description,
    type,
    answers,
  } = d;

  return {
    Question: question_name,
    Description: question_description,
    Type: answer_type,
  };
});

According to the code which I tried, I was able to create an object with a Question, Description, and Type but don't know how to pick the key/value from the answers array of objects and add them to the object (updated_qstnData) that I am creating

How do I spread out the answers key/value to my output object?

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

0

Check if this would help in your situation:

const original_data = [{
   "question_name":"What is this question for?",
   "description":"This is a description",
   "type":"Multi choice",
   "answers":[
       {"option":"opt1","score":2},
       {"option":"opt2","score":4},
       {"option":"opt3","score":5}
   ]
}];

let new_data = original_data.map(o => {
    let expected = {
        Question: o.question_name,
        Description: o.description,
        Type: o.type,
    };
    
    if (o.answers) {
        o.answers.forEach((a, index) => Object.keys(a).forEach(k => expected[k + (index+1)] = a[k]));
    }
    
    //console.log(expected);
    return expected;
});

console.log("new_data", new_data);
console.log("first item in new_data", new_data[0]);
about 4 years ago · Juan Pablo Isaza Report

0

You can try this solution

const original_data = [
      {
        question_name: "What is this question for?",
        description: "This is a description",
        type: "Multi choice",
        answers: [
          {
            option: "opt1",
            score: 2,
          },
          {
            option: "opt2",
            score: 4,
          },
          {
            option: "opt3",
            score: 5,
          },
        ],
      },
    ];

const updated_qstnData = original_data.map((d) => {
  const {
    question_name,
    description,
    type,
    answers,
  } = d;
  
  const result = {
    Question: question_name,
    Description: description,
    Type: type,
  }
  
  const answerObject = answers.reduce((answerData, currentAnswer, index) => {
      const optionKey = index ? "option" + index : "option"
      const scoreKey = index ? "score" + index : "score"
      return {
      ...answerData,
      [optionKey]: currentAnswer.option,
      [scoreKey]: currentAnswer.score
      }
  }, {})

  return {
    ...result,
    ...answerObject
  };
});

console.log(updated_qstnData)
.as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

You can flat map the answers array to object entries and adjust the keys as necessary.

For example...

const original_data = [{"question_name":"What is this question for?","description":"This is a description","type":"Multi choice","answers":[{"option":"opt1","score":2},{"option":"opt2","score":4},{"option":"opt3","score":5}]}];

const updated_qstnData = original_data.map((q) => ({
  Question: q.question_name,
  Description: q.description,
  Type: q.type,
  ...Object.fromEntries(
    q.answers.flatMap((a, i) => {
      const suffix = i > 0 ? i : "";
      return Object.entries(a).map(([k, v]) => [k + suffix, v]);
    })
  ),
}));

console.log(updated_qstnData);
.as-console-wrapper { max-height: 100% !important; }

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!