Introduction
JavaScript arrays are used to store multiple values in a single variable. For example, an array can contain product names, user records, prices, or order details.
const fruits = ["Apple", "Banana", "Mango"];
Code language: JavaScript (javascript)JavaScript provides several built-in methods that make it easier to work with arrays. The most commonly used JavaScript array methods are:
map()filter()reduce()find()forEach()
These methods help you transform data, select specific items, calculate values, search for records and run an operation for every item.
Understanding these JavaScript array methods is important for frontend development, backend development, React applications, Node.js APIs and data processing.
What Are JavaScript Array Methods?
JavaScript array methods are built-in functions that allow you to perform operations on array values.
Instead of writing long traditional for loops, you can use methods such as map(), filter() and reduce() to write cleaner and more readable code.
For example, using a traditional loop:
const numbers = [1, 2, 3, 4];
const doubledNumbers = [];
for (let i = 0; i < numbers.length; i++) {
doubledNumbers.push(numbers[i] * 2);
}
console.log(doubledNumbers);
Code language: JavaScript (javascript)The same operation can be written using map():
const numbers = [1, 2, 3, 4];
const doubledNumbers = numbers.map((number) => {
return number * 2;
});
console.log(doubledNumbers);
Code language: JavaScript (javascript)Both examples produce:
[2, 4, 6, 8]
Code language: JSON / JSON with Comments (json)The second example is shorter and clearly shows that every number should be doubled.
1. The map() Method
The map() method creates a new array by applying a function to every item in the original array.
Basic Syntax
const newArray = array.map((item, index, originalArray) => {
return transformedValue;
});
Code language: JavaScript (javascript)The callback function can receive three arguments:
item: The current array itemindex: The current item positionoriginalArray: The original array
Simple Example
const prices = [100, 200, 300];
const pricesWithTax = prices.map((price) => {
return price * 1.18;
});
console.log(pricesWithTax);
Code language: JavaScript (javascript)Output:
[118, 236, 354]
Code language: JSON / JSON with Comments (json)The map() method does not change the original array.
console.log(prices);
// [100, 200, 300]
Code language: JavaScript (javascript)Working with Objects
A common use of map() is extracting or transforming object properties.
const users = [
{ id: 1, name: "Amit" },
{ id: 2, name: "Sara" },
{ id: 3, name: "John" }
];
const userNames = users.map((user) => {
return user.name;
});
console.log(userNames);
Code language: JavaScript (javascript)Output:
["Amit", "Sara", "John"]
Code language: JSON / JSON with Comments (json)When Should You Use map()?
Use map() when you want to:
- Transform every item
- Create a new array
- Extract one property from every object
- Format data before displaying it in React
- Convert API response data into another structure
For example, React commonly uses map() to display a list:
function UserList({ users }) {
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}
Code language: JavaScript (javascript)2. The filter() Method
The filter() method creates a new array containing only the items that satisfy a condition.
The callback must return either true or false.
- If it returns
true, the item is included. - If it returns
false, the item is removed from the result.
Basic Syntax
const filteredArray = array.filter((item) => {
return condition;
});
Code language: JavaScript (javascript)Filtering Numbers
const numbers = [10, 15, 20, 25, 30];
const numbersGreaterThanTwenty = numbers.filter((number) => {
return number > 20;
});
console.log(numbersGreaterThanTwenty);
Code language: JavaScript (javascript)Output:
[25, 30]
Code language: JSON / JSON with Comments (json)Filtering Objects
const products = [
{ name: "Laptop", price: 60000, available: true },
{ name: "Mouse", price: 800, available: false },
{ name: "Keyboard", price: 2500, available: true }
];
const availableProducts = products.filter((product) => {
return product.available === true;
});
console.log(availableProducts);
Code language: JavaScript (javascript)Output:
[
{ name: "Laptop", price: 60000, available: true },
{ name: "Keyboard", price: 2500, available: true }
]
Code language: JavaScript (javascript)Combining Conditions
You can use logical operators inside filter().
const employees = [
{ name: "Amit", department: "IT", experience: 5 },
{ name: "Sara", department: "HR", experience: 3 },
{ name: "John", department: "IT", experience: 2 }
];
const experiencedITEmployees = employees.filter((employee) => {
return employee.department === "IT" && employee.experience >= 3;
});
console.log(experiencedITEmployees);
Code language: JavaScript (javascript)When Should You Use filter()?
Use filter() when you want to:
- Find all matching records
- Remove inactive users
- Display products within a price range
- Filter search results
- Select completed tasks
- Remove duplicate or unwanted values
3. The reduce() Method
The reduce() method processes every array item and returns one final result.
That final result can be:
- A number
- A string
- An object
- Another array
- A grouped data structure
Basic Syntax
const result = array.reduce((accumulator, currentValue) => {
return updatedAccumulator;
}, initialValue);
Code language: JavaScript (javascript)The two most important values are:
accumulator: Stores the result of the previous operationcurrentValue: Stores the current array item
Calculating a Total
const prices = [100, 250, 300, 150];
const total = prices.reduce((sum, price) => {
return sum + price;
}, 0);
console.log(total);
Code language: JavaScript (javascript)Output:
800
The value 0 is the initial value of the accumulator.
The calculation happens like this:
0 + 100 = 100
100 + 250 = 350
350 + 300 = 650
650 + 150 = 800
Calculating a Cart Total
const cart = [
{ name: "Book", price: 500, quantity: 2 },
{ name: "Pen", price: 50, quantity: 3 },
{ name: "Bag", price: 1200, quantity: 1 }
];
const cartTotal = cart.reduce((total, item) => {
return total + item.price * item.quantity;
}, 0);
console.log(cartTotal);
Code language: JavaScript (javascript)Output:
2350
Grouping Values with reduce()
const users = [
{ name: "Amit", role: "admin" },
{ name: "Sara", role: "user" },
{ name: "John", role: "admin" }
];
const usersByRole = users.reduce((groups, user) => {
if (!groups[user.role]) {
groups[user.role] = [];
}
groups[user.role].push(user);
return groups;
}, {});
console.log(usersByRole);
Code language: JavaScript (javascript)Output:
{
admin: [
{ name: "Amit", role: "admin" },
{ name: "John", role: "admin" }
],
user: [
{ name: "Sara", role: "user" }
]
}
Code language: JavaScript (javascript)When Should You Use reduce()?
Use reduce() when you need to:
- Calculate totals
- Count items
- Group records
- Build an object from an array
- Flatten nested arrays
- Create summary data from API responses
reduce() is powerful, but beginners should use it only when it makes the logic clearer.
4. The find() Method
The find() method returns the first array item that matches a condition.
If no item matches, it returns undefined.
Finding a Number
const numbers = [5, 12, 18, 25, 30];
const result = numbers.find((number) => {
return number > 20;
});
console.log(result);
Code language: JavaScript (javascript)Output:
25
Although 30 also matches the condition, find() stops after finding the first matching value.
Finding an Object
const users = [
{ id: 1, name: "Amit" },
{ id: 2, name: "Sara" },
{ id: 3, name: "John" }
];
const user = users.find((user) => {
return user.id === 2;
});
console.log(user);
Code language: JavaScript (javascript)Output:
{ id: 2, name: "Sara" }
Code language: CSS (css)Handling a Missing Result
const user = users.find((user) => {
return user.id === 10;
});
if (user) {
console.log(user.name);
} else {
console.log("User not found");
}
Code language: JavaScript (javascript)When Should You Use find()?
Use find() when you want:
- One user by ID
- One product by SKU
- One order by order ID
- The first matching record
- A quick lookup from an array
Use filter() when you need all matching items. Use find() when you need only the first matching item.
5. The forEach() Method
The forEach() method executes a function once for every item in an array.
Unlike map(), it does not create a new array.
Basic Example
const fruits = ["Apple", "Banana", "Mango"];
fruits.forEach((fruit) => {
console.log(fruit);
});
Code language: JavaScript (javascript)Output:
Apple
Banana
Mango
Using the Index
const languages = ["JavaScript", "Python", "Java"];
languages.forEach((language, index) => {
console.log(`${index + 1}. ${language}`);
});
Code language: JavaScript (javascript)Output:
1. JavaScript
2. Python
3. Java
When Should You Use forEach()?
Use forEach() when you want to:
- Print values
- Send data to another function
- Update an external variable
- Perform an action for every item
- Log debugging information
Example:
const emails = ["a@example.com", "b@example.com"];
emails.forEach((email) => {
console.log(`Sending email to ${email}`);
});
Code language: JavaScript (javascript)JavaScript Array Methods Comparison
| Method | Main Purpose | Returns |
|---|---|---|
map() | Transform every item | New array |
filter() | Select matching items | New array |
reduce() | Create one final result | Any value |
find() | Find the first matching item | Item or undefined |
forEach() | Run an operation for every item | undefined |
Chaining JavaScript Array Methods
You can combine multiple JavaScript array methods to solve practical problems.
const products = [
{ name: "Laptop", price: 60000, available: true },
{ name: "Mouse", price: 800, available: false },
{ name: "Keyboard", price: 2500, available: true }
];
const availableProductNames = products
.filter((product) => product.available)
.map((product) => product.name);
console.log(availableProductNames);
Code language: JavaScript (javascript)Output:
["Laptop", "Keyboard"]
Code language: JSON / JSON with Comments (json)The code first filters available products and then extracts their names.
Best Practices
Use the Correct Method
Choose the method based on the expected result:
- Need a transformed array? Use
map(). - Need selected items? Use
filter(). - Need one calculated result? Use
reduce(). - Need one matching item? Use
find(). - Need only an action? Use
forEach().
Avoid Mutating the Original Array
Prefer creating new arrays instead of changing the original data.
const numbers = [1, 2, 3];
const updatedNumbers = numbers.map((number) => number * 2);
console.log(numbers);
console.log(updatedNumbers);
Code language: JavaScript (javascript)This is especially useful in React, where immutable state updates help prevent rendering problems.
Always Provide an Initial Value to reduce()
const total = [10, 20, 30].reduce((sum, value) => {
return sum + value;
}, 0);
Code language: JavaScript (javascript)Providing an initial value makes the code safer, especially when the array may be empty.
Keep Callback Functions Simple
If a callback becomes too large, move the logic into a separate named function.
function isActiveUser(user) {
return user.isActive;
}
const activeUsers = users.filter(isActiveUser);
Code language: JavaScript (javascript)Common Mistakes
Forgetting to Return from map()
Incorrect:
const doubled = numbers.map((number) => {
number * 2;
});
console.log(doubled);
// [undefined, undefined, undefined]
Code language: JavaScript (javascript)Correct:
const doubled = numbers.map((number) => {
return number * 2;
});
Code language: JavaScript (javascript)Or use an implicit return:
const doubled = numbers.map((number) => number * 2);
Code language: JavaScript (javascript)Using map() When You Need forEach()
If you do not need a new array, forEach() may be more appropriate.
users.forEach((user) => {
console.log(user.name);
});
Code language: JavaScript (javascript)Using forEach() When You Need a Result
This does not work as expected:
const doubled = numbers.forEach((number) => {
return number * 2;
});
console.log(doubled);
// undefined
Code language: JavaScript (javascript)Use map() instead:
const doubled = numbers.map((number) => number * 2);
Code language: JavaScript (javascript)Forgetting That find() Can Return undefined
Always check the result before accessing its properties.
const user = users.find((user) => user.id === 99);
if (user) {
console.log(user.name);
}
Code language: JavaScript (javascript)Forgetting the Initial Value in reduce()
This can cause unexpected results when the array is empty:
const total = [].reduce((sum, value) => sum + value);
Code language: JavaScript (javascript)Use an initial value:
const total = [].reduce((sum, value) => sum + value, 0);
Code language: JavaScript (javascript)Using await with forEach()
forEach() does not wait for asynchronous callbacks.
Incorrect:
users.forEach(async (user) => {
await saveUser(user);
});
Code language: JavaScript (javascript)For sequential asynchronous operations, use a for...of loop:
for (const user of users) {
await saveUser(user);
}
Code language: JavaScript (javascript)Conclusion
JavaScript array methods make everyday programming tasks easier and more readable.
Use map() to transform every item, filter() to select matching items, reduce() to calculate or build one final result, find() to locate the first matching item and forEach() to perform an operation for every item.
These methods are used regularly in React components, Node.js services, REST APIs and full-stack applications. Start with simple examples, understand what each method returns and practice combining them with real-world data.
Once you understand these JavaScript array methods, your code will become shorter, clearer and easier to maintain.