متدهای پیشرفته آرایه 🥷
با Map, Filter و Reduce مثل یه نینجا با آرایهها کار میکنیم!
`forEach()`: یه حلقه تمیز و شیک
`forEach` یه راه سادهتر برای چرخیدن روی اعضای یه آرایهست. دیگه نیازی به `for` و شمارنده و این داستانا نیست. فقط بهش میگی "به ازای هر عضو، این کارو بکن".
const fruits = ['سیب', 'موز', 'گیلاس'];
fruits.forEach(function(fruit, index) {
console.log(`میوه شماره ${index + 1}: ${fruit}`);
});
`map()`: تبدیل اعضای آرایه
`map` روی تکتک اعضای آرایه میچرخه، یه بلایی سرشون میاره و یه آرایه جدید با اعضای تغییرکرده بهمون برمیگردونه. آرایه اصلی دستنخورده باقی میمونه!
const numbers = [1, 2, 3, 4];
const doubledNumbers = numbers.map(function(num) {
return num * 2;
});
console.log(doubledNumbers); // خروجی: [2, 4, 6, 8]
console.log(numbers); // خروجی: [1, 2, 3, 4] (اصلی تغییر نکرده)
`filter()`: غربال کردن آرایه
`filter` هم یه آرایه جدید بهمون میده، ولی فقط شامل اعضاییه که از فیلتر ما رد بشن (یعنی شرطمون براشون `true` باشه).
const numbers = [10, 25, 5, 40, 15];
const bigNumbers = numbers.filter(function(num) {
return num > 20;
});
console.log(bigNumbers); // خروجی: [25, 40]
`reduce()`: جوش دادن همه اعضا به هم!
`reduce` کل اعضای آرایه رو میگیره و اونها رو به یه مقدار واحد تبدیل میکنه. مثلاً برای جمع زدن همه اعداد یه آرایه عالیه.
const numbers = [1, 2, 3, 4, 5];
// accumulator: جمعکننده (نتیجه تا این لحظه)
// currentValue: مقدار فعلی
const sum = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0); // 0 مقدار اولیه جمعکننده است
console.log(sum); // خروجی: 15
تمرین! 🧠
یه آرایه از آبجکتهای محصولات داری. با استفاده از متدهای `filter` و `map`، یه آرایه جدید بساز که فقط شامل اسم محصولاتی باشه که قیمتشون بیشتر از ۵۰۰۰ تومنه.
جواب تمرین
const products = [
{ name: 'کتاب', price: 12000 },
{ name: 'خودکار', price: 3000 },
{ name: 'دفتر', price: 8000 },
{ name: 'مداد', price: 2500 }
];
const expensiveProductNames = products
.filter(product => product.price > 5000) // اول فیلتر میکنیم
.map(product => product.name); // بعد اسمها رو استخراج میکنیم
console.log(expensiveProductNames); // خروجی: ['کتاب', 'دفتر']