🎯 Common Real-World Combinations
1. Process CSV Data
let csvData = "John,25,Engineer\nJane,30,Designer\nBob,35,Manager";
let users = csvData.split('\n')
.map(line => line.split(','))
.map(([name, age, job]) => ({
name: name.trim(),
age: parseInt(age),
job: job.trim()
}))
.filter(user => user.age >= 30);
console.log(users);
// [{name: 'Jane', age: 30, job: 'Designer'}, {name: 'Bob', age: 35, job: 'Manager'}]
2. Clean and Process Text Data
let messyText = " HELLO world , JAVASCRIPT programming , DATA processing ";
let cleanWords = messyText.trim()
.toLowerCase()
.split(',')
.map(word => word.trim())
.filter(word => word.length > 0)
.map(phrase => phrase.split(' ').map(word =>
word.charAt(0).toUpperCase() + word.slice(1)
).join(' '));
console.log(cleanWords);
// ['Hello World', 'Javascript Programming', 'Data Processing']
3. Email Validation and Processing
let emailList = "john@gmail.com, JANE@YAHOO.COM, bob@invalid, alice@hotmail.com ";
let validEmails = emailList.split(',')
.map(email => email.trim().toLowerCase())
.filter(email => email.includes('@') && email.includes('.'))
.filter(email => email.indexOf('@') > 0 && email.lastIndexOf('.') > email.indexOf('@'))
.sort();
console.log(validEmails);
// ['alice@hotmail.com', 'jane@yahoo.com', 'john@gmail.com']
4. Word Frequency Counter
let text = "The quick brown fox jumps over the lazy dog. The dog was really lazy.";
let wordFreq = text.toLowerCase()
.replace(/[^\w\s]/g, '')
.split(' ')
.filter(word => word.length > 0)
.reduce((freq, word) => {
freq[word] = (freq[word] || 0) + 1;
return freq;
}, {});
console.log(wordFreq);
// {the: 2, quick: 1, brown: 1, fox: 1, jumps: 1, over: 1, lazy: 2, dog: 2, was: 1, really: 1}
5. URL Path Processing
let urls = [
"https://example.com/users/123/profile",
"https://example.com/products/456/details",
"https://example.com/orders/789/summary"
];
let processedUrls = urls.map(url => {
let pathParts = url.split('/').slice(3); // Remove protocol and domain
return {
originalUrl: url,
resource: pathParts[0],
id: pathParts[1],
action: pathParts[2],
breadcrumb: pathParts.join(' > ')
};
});
console.log(processedUrls);
// [{originalUrl: '...', resource: 'users', id: '123', action: 'profile', breadcrumb: 'users > 123 > profile'}, ...]
6. Data Transformation Pipeline
let rawData = "Product1:$25.99:Electronics,Product2:$15.50:Books,Product3:$99.99:Electronics";
let products = rawData.split(',')
.map(item => {
let [name, price, category] = item.split(':');
return {
name: name.trim(),
price: parseFloat(price.replace('$', '')),
category: category.trim()
};
})
.filter(product => product.price > 20)
.sort((a, b) => b.price - a.price)
.map(product => ({
...product,
displayPrice: `$${product.price.toFixed(2)}`,
displayName: product.name.replace(/(\d+)/, ' $1').trim()
}));
console.log(products);
// Sorted products with formatted names and prices
7. Search and Highlight
let articles = [
"JavaScript is a powerful programming language",
"Python is great for data science",
"JavaScript frameworks are very popular"
];
let searchTerm = "javascript";
let results = articles
.map((article, index) => ({ text: article, index }))
.filter(item => item.text.toLowerCase().includes(searchTerm.toLowerCase()))
.map(item => ({
...item,
highlighted: item.text.replace(
new RegExp(searchTerm, 'gi'),
match => `${match}`
),
snippet: item.text.length > 50 ?
item.text.substring(0, 50) + '...' :
item.text
}));
console.log(results);
// Articles containing "javascript" with highlighting
8. Form Data Validation
let formData = [
"name: John Doe",
"email: john@example.com",
"phone: 123-456-7890",
"age: 25"
];
let validatedData = formData
.map(field => field.split(':').map(part => part.trim()))
.reduce((acc, [key, value]) => {
acc[key] = value;
return acc;
}, {})
// Validation rules
let validationResults = Object.entries(validatedData)
.map(([key, value]) => {
let isValid = true;
let errors = [];
switch(key) {
case 'email':
isValid = value.includes('@') && value.includes('.');
if (!isValid) errors.push('Invalid email format');
break;
case 'phone':
isValid = value.replace(/\D/g, '').length === 10;
if (!isValid) errors.push('Phone must be 10 digits');
break;
case 'age':
isValid = !isNaN(value) && parseInt(value) >= 18;
if (!isValid) errors.push('Age must be 18 or older');
break;
}
return { field: key, value, isValid, errors };
});
console.log(validationResults);
// Validation results for each field