Destructuring is a small but powerful feature in modern JavaScript that lets you extract values from arrays and properties from objects using a clean, declarative syntax. It reduces boilerplate, makes intent clearer, and pairs especially well with modern patterns (like returning multiple values from a function, handling API responses, and writing concise React components). This article guides you from the basics to practical patterns, enabling you to use destructuring confidently and safely.
What you’ll learn
By the end of this guide, you’ll understand how to:
- Use object destructuring to pull values from objects.
- Use array destructuring to get values from arrays.
- Add default values so your code doesn’t break when data is missing.
- Rename variables when destructuring to make them clearer.
- Handle nested objects safely.
- Use destructuring in functions, loops, and real-world examples.
- Avoid common mistakes beginners often make.
Object destructuring (the basics)
With object destructuring, you can extract properties from an object directly into variables:
const user = { name: 'Wisdom', age: 30 };
const { name, age } = user;
console.log(name); // 'Wisdom'
console.log(age); // 30
Instead of writing user.name and user.age we pulled them out in one line.
Array destructuring (the basics)
Array destructuring works the same way, but it pulls values by their position:
const colors = ['red', 'green', 'yellow'];
const [first, second] = colors;
console.log(first); // 'red'
console.log(second); // 'green'
If you only need some values, you can skip positions:
const [ , , third] = colors;
console.log(third); // 'yellow'
Default values
Sometimes, a property or value might not exist. With destructuring, you can give it a default value so your code doesn’t crash.
const settings = { theme: undefined };
const { theme = 'light', fontSize = 16 } = settings;
console.log(theme); // 'light'
console.log(fontSize); // 16
For arrays:
const numbers = [1];
const [first = 0, second = 2] = numbers;
console.log(first); // 1
console.log(second); // 2
Renaming variables
You can also rename values as you destructure them:
const person = { fullName: 'Wisdom Udo', code: '007' };
const { fullName: name, code: id } = person;
console.log(name); // 'Wisdom Udo'
console.log(id); // '007'
This is helpful when the property name is long or doesn’t match what you want to call it.
Rest operator (grabbing the “rest”)
You can pull out specific values and then keep the “rest” of the object or array:
const car = { brand: 'Toyota', year: 2020, color: 'blue' };
const { brand, ...otherDetails } = car;
console.log(brand); // 'Toyota'
console.log(otherDetails); // { year: 2020, color: 'blue' }
With arrays:
const numbers = [10, 20, 30, 40];
const [first, ...rest] = numbers;
console.log(first); // 10
console.log(rest); // [20, 30, 40]
Nested destructuring
You can go deeper and pull out values from objects inside objects:
const user = {
profile: {
name: 'Wisdom',
city: 'Port Harcourt'
}
};
const { profile: { name, city } } = user;
console.log(name); // 'Wisdom'
console.log(city); // 'Port Harcourt'
If you’re not sure the data exists, use a default to avoid errors:
const data = {};
const { profile: { name } = {} } = data;
console.log(name); // undefined (safe)
Destructuring in functions
One of the best uses of destructuring is in function parameters.
function greet({ name = 'Guest', age = 18 } = {}) {
console.log(Hello ${name}, you are ${age} years old.);
}
greet(); // Hello Guest, you are 18 years old.
greet({ name: 'Wisdom', age: 30 }); // Hello Wisdom, you are 30 years old.
This makes your functions easy to read and safe when arguments are missing.
Real-world examples
- React components (props):
function Button({ label, onClick }) {
return <button onClick={onClick}>{label}</button>;
}
- Swapping values quickly:
let a = 1, b = 2;
[a, b] = [b, a];
console.log(a, b); // 2, 1
- Looping through arrays of objects:
const users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'James' }];
for (const { id, name } of users) {
console.log(id, name);
}
Common mistakes to avoid
- Destructuring
undefined
ornull
will throw an error. Always add a default (= {}
or= []
). - Forgetting parentheses when assigning to existing variables:
let x, y;
({ x, y } = { x: 5, y: 10 }); // wrap in ()
- Overusing destructuring: only take what you need. Too much can make code confusing.
Conclusion
Destructuring might look tricky at first, but once you practice it, you’ll see how much cleaner your code becomes. Instead of writing long repetitive lines, you can pull values out of objects and arrays in just a few keystrokes.
For beginners, the best way to master destructuring is to practice:
- Rewrite a function that takes an
options
object using destructuring. - Extract only the values you need from an array.
- Try destructuring API responses or JSON data.
The more you use it, the more natural it will feel, and soon, destructuring will become one of your favorite JavaScript tools.
You can reach out to me via LinkedIn
Top comments (0)