I’d like to learn how to convert a nested object into a new one by rearranging this structure:
data =
{
centeredSlides: {
0: true,
1300: false
},
somethingElse: {
0: false,
1500: 'aString'
}
}
So that it follows this structure:
newData =
{
0: {
centeredSlides: true,
somethingElse: false
},
1300: {
centeredSlides: false
},
1500: {
somethingElse: 'aString'
}
}
Thanks
Advertisement
Answer
You can grab the entires of your object and use .reduce() to build a new object from the [[key, value], ...] entry array. For each [key, value] you can iterate over the entries of the nested object and use the keys from that as your outer keys of your accumulated/new object:
const data = { centeredSlides: { 0: true, 1300: false }, somethingElse: { 0: false, 1500: 'aString' } };
const res = Object.entries(data).reduce((acc, [innerKey, obj]) => {
Object.entries(obj).forEach(([outerKey, val]) => {
acc[outerKey] = acc[outerKey] || {}; // grab the object already stored at the `outerKey` or create a new one.
acc[outerKey][innerKey] = val;
})
return acc;
}, {});
console.log(res);