Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
JavaScript

JavaScript: Master Map, Filter, Reduce for Arrays

- 25.07.26 - ErcanOPAK

📊 Map, Filter, Reduce = Array Power

Loops are imperative. Map, Filter, Reduce are functional. Transform, filter, accumulate — elegant array manipulation.

📝 Map (Transform)

// Map - Transform each element
const numbers = [1, 2, 3, 4, 5];

// Double each number
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

// Convert to strings
const strings = numbers.map(n => `Number: ${n}`);
console.log(strings); // ["Number: 1", "Number: 2", ...]

// Extract property
const users = [{ name: 'Alice', age: 30 }, { name: 'Bob', age: 25 }];
const names = users.map(u => u.name);
console.log(names); // ['Alice', 'Bob']

// Add property
const withId = users.map((u, i) => ({ ...u, id: i + 1 }));

// Conditional mapping
const results = numbers.map(n => n > 3 ? 'high' : 'low');

🎯 Filter (Select)

// Filter - Select elements
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Even numbers
const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4, 6, 8, 10]

// Greater than 5
const big = numbers.filter(n => n > 5);
console.log(big); // [6, 7, 8, 9, 10]

// Filter objects
const users = [
    { name: 'Alice', age: 30, active: true },
    { name: 'Bob', age: 25, active: false },
    { name: 'Charlie', age: 35, active: true }
];
const activeUsers = users.filter(u => u.active);
console.log(activeUsers); // [{ name: 'Alice', ... }, { name: 'Charlie', ... }]

// Search filter
const searchTerm = 'ali';
const found = users.filter(u => 
    u.name.toLowerCase().includes(searchTerm.toLowerCase())
);

// Remove duplicates
const unique = numbers.filter((v, i, arr) => arr.indexOf(v) === i);

🎯 Reduce (Accumulate)

// Reduce - Accumulate
const numbers = [1, 2, 3, 4, 5];

// Sum
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15

// Product
const product = numbers.reduce((acc, curr) => acc * curr, 1);
console.log(product); // 120

// Max value
const max = numbers.reduce((acc, curr) => Math.max(acc, curr));
console.log(max); // 5

// Count occurrences
const fruits = ['apple', 'orange', 'apple', 'banana', 'orange', 'apple'];
const count = fruits.reduce((acc, curr) => {
    acc[curr] = (acc[curr] || 0) + 1;
    return acc;
}, {});
console.log(count); // { apple: 3, orange: 2, banana: 1 }

// Group by property
const users = [
    { name: 'Alice', role: 'admin' },
    { name: 'Bob', role: 'user' },
    { name: 'Charlie', role: 'admin' }
];
const grouped = users.reduce((acc, user) => {
    (acc[user.role] = acc[user.role] || []).push(user);
    return acc;
}, {});
console.log(grouped);

// Chaining map + filter + reduce
const result = users
    .filter(u => u.active)
    .map(u => u.age)
    .reduce((sum, age) => sum + age, 0);
console.log(result); // Sum of active users' ages

đź’ˇ Performance Tips

  • Chain operations for readability
  • Use filter before map (reduce items)
  • Use reduce for complex accumulations
  • Functions are immutable (create new arrays)
  • Use forEach for side effects

“Map, Filter, Reduce = array power. Transform, select, accumulate. Essential for functional JavaScript.”

— JavaScript Developer

Related posts:

JS “Debounce vs Throttle” — Why Your Search Bar Lags

JavaScript: Building a Data Dashboard with Charts

JavaScript — Object.freeze() Is Shallow

Post Views: 6

Post navigation

HTML: Use Semantic Elements for Better Structure
Ajax: Understand REST API Design Principles

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (553)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com