When working with JavaScript (ES6+) (especially in frameworks like React), we often use four powerful features: map()
, filter()
, Set
, and the spread operator (...).
Let's break these features with some simple examples and finally a practical example of combining all of these together.
1. The map()
Method
- The
.map()
method is used to transform each element of an array. - It returns a new array of the same length.
- .map() does not change the original array.
Syntax:
array.map(function(element, index, array) {
// return the new value for this element
});
Explanation of parameters:
-
element
→ the current item in the array -
index
(optional) → the position of the element (0, 1, 2, …) -
array
(optional) → the whole array being mapped
Example:
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]
Explanation:
The condition is given inside the function (num => num * 2)
.
So .map()
will go through each element in the array numbers
and multiply it by 2. Then it will create a new array with the result value.
👉 In React, map() is often used to render lists:
const fruits = ['Apple', 'Banana', 'Mango'];
<ul>
{fruits.map(fruit => <li key={fruit}>{fruit}</li>)}
</ul>
2. The filter()
Method
- The
.filter()
method is used to keep only the elements that match a condition. - It also returns a new array, without modifying the original.
- It does not execute the function for empty elements.
Syntax:
array.filter(function(element, index, array) {
// return true to keep the element
// return false to remove it
});
Explanation of parameters:
Same as .map()
method.
Example:
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6]
Explanation:
The condition given inside the function (num => num % 2 === 0)
simply means that only even numbers should be returned.
So .filter()
will go through each element in the array numbers
and return a new array keeping only the even number elements.
3. The Set Object
- A Set stores unique values only (no duplicates).
- It’s useful when you want to remove repeated items.
Example:
const categories = ['Fast Food', 'Healthy', 'Fast Food', 'Dessert'];
const uniqueCategories = new Set(categories);
console.log(uniqueCategories);
// Set { 'Fast Food', 'Healthy', 'Dessert' }
If you need it back as an array:
const uniqueArray = [...uniqueCategories];
4. The Spread Operator (...)
- The spread operator unpacks values from arrays, objects, or iterables.
- It’s useful for copying, merging, or expanding data.
Example with Arrays:
const nums1 = [1, 2, 3];
const nums2 = [4, 5];
const combined = [...nums1, ...nums2];
console.log(combined); // [1, 2, 3, 4, 5]
Example with Objects:
const user = { name: 'Alice', age: 25 };
const updated = { ...user, age: 26 };
console.log(updated); // { name: 'Alice', age: 26 }
Explanation:
- The spread operator copies all the properties from the user object into the new object.
- After spreading, we also specify age: 26, which overrides the old age value (25) with the new one (26).
- As a result, the updated object contains the same name as before ("Alice") but with the updated age.
- Importantly, the original user object remains unchanged — we just created a new object with modified data.
Combining It All Together
const availableCategories = [
'All',
...new Set(
data.foods
.filter(food => food.isAvailable)
.map(food => food.category)
)
];
//Output : ['All', 'Fast Food', 'Healthy', 'Dessert']
Step-by-step explanation:
Assume this is an array of food objects, e.g.
[
{ name: 'Pizza', category: 'Fast Food', isAvailable: true },
{ name: 'Salad', category: 'Healthy', isAvailable: false },
{ name: 'Burger', category: 'Fast Food', isAvailable: true }
]
-
filter(food => food.isAvailable)
→ keep only foods that are available.
[
{ name: 'Pizza', category: 'Fast Food', isAvailable: true },
{ name: 'Burger', category: 'Fast Food', isAvailable: true }
]
-
map(food => food.category)
→ get their categories:['Fast Food', 'Fast Food']
-
new Set(...)
→ remove duplicates :Set { 'Fast Food' }
-
... spread operator
→ convert back into an array:['Fast Food']
- Add 'All' at the beginning for a universal option:
['All', 'Fast Food']
Together, these features make code cleaner, shorter, and easier to understand. Whether you’re building simple scripts or working in frameworks like React, mastering these concepts will give you a strong foundation for handling data in JavaScript.
Top comments (2)
Lovely work, Swarnali!
Thank you so much!