هل ForEach و Map متماثلتان؟
جزء من قسم Logic & Flow في رحلة JavaScript على Coddy — الدرس 56 من 65.
بينما يعد كل من forEach() و map() من طرق المصفوفات المستخدمة للتكرار، إلا أنهما يخدمان أغراضاً مختلفة ولهما سلوكيات متميزة:
forEach():
- ينفذ دالة مقدمة مرة واحدة لكل عنصر من عناصر المصفوفة.
- لا ينشئ مصفوفة جديدة.
- يعيد
undefined. - لا يمكن ربطه بطرق المصفوفات الأخرى.
map():
- تنشئ مصفوفة جديدة تحتوي على نتائج استدعاء دالة معينة على كل عنصر في المصفوفة.
- تعيد مصفوفة جديدة بنفس طول المصفوفة الأصلية.
- يمكن ربطها مع دوال المصفوفات الأخرى.
مثال:
const numbers = [1, 2, 3, 4];
// forEach
numbers.forEach(num => console.log(num * 2));
// المخرجات: 2, 4, 6, 8
// القيمة المرجعة: undefined// map
const doubled = numbers.map(num => num * 2);
console.log(doubled);
// المخرجات: [2, 4, 6, 8]
// تعيد: مصفوفة جديدة [2, 4, 6, 8]استخدم forEach() عندما تريد إجراء عملية على كل عنصر دون إنشاء مصفوفة جديدة. استخدم map() عندما تريد تحويل كل عنصر وإنشاء مصفوفة جديدة بالنتائج.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
ورقة مرجعية
بينما تُعد كل من forEach() و map() من طرق المصفوفات (array methods) المستخدمة للتكرار، إلا أنهما تخدمان أغراضاً مختلفة:
forEach():
- تنفذ دالة مرة واحدة لكل عنصر من عناصر المصفوفة
- لا تنشئ مصفوفة جديدة
- تُرجع
undefined - لا يمكن ربطها بطرق مصفوفة أخرى
map():
- تنشئ مصفوفة جديدة تحتوي على نتائج استدعاء دالة على كل عنصر
- تُرجع مصفوفة جديدة بنفس طول المصفوفة الأصلية
- يمكن ربطها بطرق مصفوفة أخرى
const numbers = [1, 2, 3, 4];
// forEach - تنفذ عملية، وتُرجع undefined
numbers.forEach(num => console.log(num * 2));
// map - يحول العناصر، ويُرجع مصفوفة جديدة
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]استخدم forEach() للعمليات التي لا تتطلب إنشاء مصفوفة جديدة. واستخدم map() لتحويل العناصر وإنشاء مصفوفة جديدة.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1السلاسل النصية بعمق
أساسيات السلاسل النصيةالتكرار عبر السلاسل النصيةTemplate Literalsدوال السلاسل النصيةمراجعة - String Weaver2المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات5المجموعات - الجزء الأول
ما هي المجموعة؟التكرار عبر المجموعاتإضافة عنصرإزالة عنصرالتحقق من وجود عنصرالحجم وهل هي فارغةالنسخ والمسحملخص - أساسيات المجموعات8مواضيع شيقة حول الـ Arrays
تفكيك الـ Arrayاستخدام الـ Spread Syntax في الـ Arraysالـ Sparse Arraysمراجعة - ورشة عمل الـ Arrays3JSON الجزء الأول
ما هو JSON؟التحقق من وجود المفتاحObject MethodsSpread Operator الجزء الأولSpread Operator الجزء الثانيحذف المفاتيحمراجعة - معالجة مفاتيح JSON6المجموعات - الجزء الثاني
الرياضيات - اتحاد المجموعاتالرياضيات - تقاطع المجموعاتالرياضيات - الفرق بين المجموعاتالرياضيات - الفرق المتناظرالمجموعات الجزئية والمجموعات الفائقةمراجعة - مجموعات الأصدقاء9دوال المصفوفات المتقدمة
دالتا Join و Splitدالة Mapدالة Filterدالة Reduceتسلسل دوال المصفوفاتهل ForEach و Map متماثلتان؟دالة Sortدالتا Find و FindIndexمراجعة - محترف التسلسل