'Object destructuring: Assign null values in one line
Assuming I have an object like this
foo = {
a: 1,
b: 2,
c: 3
};
I would destructure it this way
const {a, b, c} = foo;
However, what, if the keys a, b and c do not exist?
foo = null;
This won't work then
const {a, b, c} = foo;
I would have to do something like
let a, b, c;
if(foo) {
a = foo.a;
b = foo.b;
c = foo.c;
};
Is there a way to do this in one line? Something like
const {a, b, c} = foo ? foo : null; // this is not working
null is not an object. (evaluating '_ref2.a')
Solution 1:[1]
It will work like you might expect, the variables a b and c will be created with the value of undefined. this is the fallback when also trying to access a property which doesn't exist on a certain object.
const foo = {};
console.log(foo.a); // undefined
const {a, b, c} = foo;
console.log(a); // undefined
console.log(b); // undefined
console.log(d); // Uncaught ReferenceError: d is not defined
Solution 2:[2]
What about destructuring default parameters?
If foo could be undefined set = foo || {} in destructuring to avoid exception
let foo = {};
const {a = null, b = null, c = null} = foo;
console.log('a:', a);
console.log('b:', b);
console.log('c:', c);
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 | Ran Turner |
| Solution 2 |
