نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
JS

منهج JavaScript

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج JavaScript/المصفوفات وطرق التعامل معها (Arrays & Array Methods)

المصفوفات وطرق التعامل معها (Arrays & Array Methods)

arrays javascriptالمصفوفات في جافاسكريبتmap filter reducearray methods jssort javascript

جدول مرجعي سريع

1
الدالةالوظيفةتُعدّل الأصلية؟
push() / pop()إضافة/حذف من النهايةنعم
map()مصفوفة جديدة بتحويل كل عنصرلا
filter()مصفوفة جديدة بعناصر تحقق شرطاًلا
reduce()اختزال المصفوفة لقيمة واحدةلا
sort()ترتيب العناصرنعم
find()أول عنصر مطابق لشرطلا

الشرح

المصفوفة (Array) هي هيكل بيانات يُخزّن قائمة مرتبة من العناصر، ويمكن الوصول لكل عنصر عبر فهرسه (Index) الذي يبدأ دائماً من الصفر. تُعرَّف المصفوفة بين قوسين مربعين []، ويمكن أن تحتوي عناصر من أنواع مختلفة في نفس المصفوفة، رغم أن الممارسة الجيدة تُفضّل الاتساق في النوع.

تمتلك المصفوفات مجموعة غنية من الدوال (Methods) المدمجة لتسهيل العمل معها. push() وpop() يُضيفان ويحذفان عنصراً من النهاية، وshift() وunshift() يفعلان نفس الشيء من البداية. slice() تُنشئ مصفوفة جزئية جديدة دون تعديل الأصلية، بينما splice() تُعدّل المصفوفة الأصلية مباشرة بالحذف أو الإضافة أو الاستبدال في مكان محدد.

أهم ثلاث دوال في البرمجة الوظيفية الحديثة هي map() التي تُنشئ مصفوفة جديدة بتطبيق دالة على كل عنصر، وfilter() التي تُنشئ مصفوفة جديدة تحتوي فقط العناصر التي تحقق شرطاً معيناً، وreduce() التي "تُختزل" المصفوفة بالكامل إلى قيمة واحدة (مثل مجموع، أو أكبر قيمة، أو حتى كائن جديد) عبر تراكم النتيجة تكرارياً.

dوال أخرى مهمة: find() تُعيد أول عنصر يحقق شرطاً، includes() تتحقق من وجود قيمة، sort() تُرتب المصفوفة (مع ملاحظة أنها تُعدّل الأصلية وتُرتب افتراضياً كنصوص ما لم تُمرَّر لها دالة مقارنة)، وforEach() تُنفذ دالة على كل عنصر دون إنشاء مصفوفة جديدة، وهي مناسبة عندما تريد فقط تنفيذ إجراء (مثل الطباعة) لا إنتاج نتيجة جديدة.

الصياغة (Syntax)

syntax
1const أرقام = [5, 2, 8, 1, 9];
2
3أرقام.push(10); // إضافة للنهاية
4أرقام.pop(); // حذف من النهاية
5
6const مضاعفة = أرقام.map(ر => ر * 2);
7const كبيرة = أرقام.filter(ر => ر > 3);
8const مجموع = أرقام.reduce((م, ر) => م + ر, 0);

أمثلة عملية

مثال 1: map و filter و reduce على مصفوفة كائنات

map و filter و reduce على مصفوفة كائنات
1// map, filter, reduce معاً في سيناريو واقعي
2const منتجات = [
3 { اسم: "قلم", سعر: 5 },
4 { اسم: "كتاب", سعر: 40 },
5 { اسم: "دفتر", سعر: 15 },
6];
7
8const أسماء = منتجات.map(م => م.اسم);
9const غالية = منتجات.filter(م => م.سعر > 10);
10const إجمالي_السعر = منتجات.reduce((مجموع, م) => مجموع + م.سعر, 0);
11
12console.log(أسماء); // ["قلم", "كتاب", "دفتر"]
13console.log(غالية.length); // 2
14console.log(إجمالي_السعر); // 60

مثال 2: فخ sort الشهير و find و includes

فخ sort الشهير و find و includes
1// sort تحتاج دالة مقارنة مع الأرقام
2const قيم = [40, 5, 100, 25];
3قيم.sort(); // ❌ [100, 25, 40, 5] — يُرتب كنصوص افتراضياً!
4قيم.sort((أ, ب) => أ - ب); // ✅ [5, 25, 40, 100] تصاعدي صحيح
5
6// find و includes
7const وجد = قيم.find(ر => ر > 30);
8console.log(وجد); // 40
9console.log(قيم.includes(25)); // true

نصائح احترافية

  • —sort() تُرتب كنصوص افتراضياً حتى مع الأرقام — مرّر دالة مقارنة (أ, ب) => أ - ب للترتيب الرقمي الصحيح دائماً.
  • —map و filter تُنشئان مصفوفة جديدة ولا تُعدّلان الأصلية، بعكس push وsplice وsort التي تُعدّل الأصلية مباشرة.
  • —استخدم reduce عندما تحتاج "قيمة واحدة" ناتجة من المصفوفة كاملة (مجموع، متوسط، تجميع في كائن).
  • —use Array.isArray(القيمة) للتحقق الموثوق من كون القيمة مصفوفة فعلاً.

الدرس السابق

الكائنات بالتفصيل (JavaScript Objects)

الدرس التالي

التعامل مع النصوص ودوالها (String Methods)

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر