'destructuring object into multiple object assignment
I have an object like so:
const obj = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5
}
I want to create multiple object literals out of it. So:
const obj1 = {
a: 1,
b: 2
}
const obj2 = {
c: 3,
d: 4,
e: 5
}
Is it possible to achieve this using an object destructing assignment?
Something like:
const { {a, b}: obj1, {c, d, e}: obj2} = obj;
Solution 1:[1]
Is it possible to achieve this using object destructuring assignment?
No, it is not possible. However, you can write a function to split an object by its property names into multiple objects like this:
function splitObject (obj, ...propertyGroups) {
return propertyGroups.map(group => {
const o = {};
for (const key of group) o[key] = obj[key];
return o;
});
}
const obj = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5,
};
const [obj1, obj2] = splitObject(obj, ['a', 'b'], ['c', 'd', 'e']);
console.log({obj, obj1, obj2});
By returning the sub-objects in a tuple, you have the freedom to destructure it, naming each one according to your preference.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | jsejcksn |