✅ أولًا: ما هي filter
؟
دالة filter
:
- هي دالة عليا (Higher-Order Function).
- تُستخدم لتصفية (اختيار) العناصر من مصفوفة بناءً على شرط معين.
- ترجع مصفوفة جديدة تحتوي فقط على العناصر التي تحقق الشرط.
- لا تعدل المصفوفة الأصلية.
📦 الصيغة العامة:
const newArray = array.filter(function(element, index, array) {
return condition; // ترجع true أو false
});
JavaScriptأو باستخدام دالة السهم:
const newArray = array.filter((element, index, array) => condition);
JavaScriptelement
: العنصر الحالي.
index
: رقم الفهرس (اختياري).
array
: المصفوفة الأصلية (اختياري).
🧠 مبدأ العمل:
- تمر الدالة على كل عنصر في المصفوفة.
- إذا كان الشرط
true
→ يُضاف العنصر إلى المصفوفة الجديدة. - إذا كان
false
→ يُستبعد العنصر.
📌 أمثلة شاملة (فقط على المصفوفات):
1. ✅ استخراج الأرقام الأكبر من 10
const numbers = [5, 12, 8, 20, 3];
const greaterThanTen = numbers.filter(num => num > 10);
console.log(greaterThanTen); // [12, 20]
JavaScript🔍 التوضيح خطوة بخطوة:
- تفحص
filter
كل رقم:- 5 > 10 ❌ → يُستبعد.
- 12 > 10 ✅ → يُؤخذ.
- 8 ❌
- 20 ✅
- 3 ❌
- الناتج:
[12, 20]
.
2. ✅ استخراج الأرقام الزوجية فقط
const numbers = [1, 2, 3, 4, 5, 6];
const even = numbers.filter(num => num % 2 === 0);
console.log(even); // [2, 4, 6]
JavaScript3. ✅ استخراج الأعداد بين 10 و 50
const nums = [5, 15, 30, 55, 70];
const inRange = nums.filter(n => n >= 10 && n <= 50);
console.log(inRange); // [15, 30]
JavaScript✅ تصفية الأعداد التي ليست مضاعفات للعدد 3
const arr = [3, 6, 8, 10, 15, 17];
const notDivisibleBy3 = arr.filter(num => num % 3 !== 0);
console.log(notDivisibleBy3); // [8, 10, 17]
JavaScript5. ✅ استخراج الأعداد الفردية الأكبر من 20
const values = [10, 21, 33, 40, 55, 60];
const result = values.filter(val => val % 2 !== 0 && val > 20);
console.log(result); // [21, 33, 55]
JavaScript✅ خصائص مهمة عن filter
الخاصية | القيمة |
---|---|
تُرجع مصفوفة جديدة | ✅ نعم |
تعدل الأصل؟ | ❌ لا |
كم عنصر في الناتج؟ | حسب الشروط |
نوع العناصر | نفس النوع الأصلي |
⚠️ ملاحظات مهمة:
- يجب أن تُرجع الدالة الشرطية
true
أوfalse
. filter
لا توقف عند أول نتيجة، بل تمر على كل العناصر.- الناتج قد يكون:
- فارغًا
[]
(إذا لم يتحقق أي شرط). - مساويًا للمصفوفة الأصلية (إذا تحققت الشروط للجميع).
- فارغًا
🧠 مثال تطبيقي مع شرط داخلي معقد
✅ استخراج الأعداد التي عدد أرقامها = 2 (أي بين 10 و99)
const values = [5, 12, 350, 45, 9, 100, 88];
const twoDigits = values.filter(num => num >= 10 && num <= 99);
console.log(twoDigits); // [12, 45, 88]
JavaScript🧪 هل يمكن استخدام filter
مع map
؟ نعم!
const nums = [5, 10, 15, 20, 25];
const processed = nums
.filter(n => n % 2 === 0) // فقط الأعداد الزوجية
.map(n => n * 2); // اضربها ×2
console.log(processed); // [20, 40]
JavaScript💬 خلاصة:
filter
تستخدم لاختيار عناصر حسب شرط.- لا تغير الأصل.
- تُرجع مصفوفة بنفس النوع.
- مناسبة جدًا لتصفية الأرقام أو القيم التي تنطبق عليها قواعد معينة.