I have data like this
const faq =
{
Question1:{
question:’Question1’,
answer: {
Answer1_1: {
answer: ‘Answer1_1’
},
Answer1_2: {
answer: ‘Answer1_2’
}
}
},
Question2:{
question:’Question2’,
answer: {
Answer2_1: {
answer: ‘Answer2_1’
},
Answer2_2: {
answer: ‘Answer2_2’
}
}
}
}
And the expected result I want is
[
{
question: ’Question1’
answer: [‘Answer1_1’, ‘Answer1_2’]
},
{
question: ’Question2’
answer: [‘Answer2_1’, ‘Answer2_2’]
}
]
From what I understood I made a function like this:
const convertQuestionTypesToMap = compose(
reduce(
(map, {question, answer}) => ({...map, [question]: question}),
{}
),
map(([question, value]) => value),
toEntries
);
I am not getting the expected result. Can anyone correct my function?
You can achieve it only using Javascript using Object.values and Array.prototype.map.
const data = { Question1: { question: "Question1", answer: { Answer1: { answer: "Answer1_1", }, Answer2: { answer: "Answer1_2", }, }, }, Question2: { question: "Question2", answer: { Answer1: { answer: "Answer2_1", }, Answer2: { answer: "Answer2_2", }, }, }, };
const output = Object.values(data).map(({ question, answer }) => {
return {
question,
answer: Object.values(answer).map(({ answer }) => answer),
};
});
console.log(output);
const data = { Question1: { question: "Question1", answer: { Answer1: { answer: "Answer1_1", }, Answer2: { answer: "Answer1_2", }, }, }, Question2: { question: "Question2", answer: { Answer1: { answer: "Answer2_1", }, Answer2: { answer: "Answer2_2", }, }, }, };
const output = Object.values(data).reduce((prev, { question, answer }) => {
prev.push({
question,
answer: Object.values(answer).reduce((prevVal, { answer }) => {
prevVal.push(answer);
return prevVal;
}, []),
});
return prev;
}, []);
console.log(output);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With