ما هي المصفوفة؟
قائمة مرتّبة من القيم تحت اسم واحد:
let fruits = ["تفاح", "موز", "عنب"];
let numbers = [1, 2, 3, 4];
let mixed = [1, "نص", true];
الوصول والطول
fruits[0] // "تفاح" (الفهرس يبدأ من 0)
fruits[fruits.length - 1] // آخر عنصر
fruits.length // 3
الإضافة والحذف
fruits.push("برتقال"); // إضافة للنهاية
fruits.pop(); // حذف من النهاية
fruits.unshift("مانجو"); // إضافة للبداية
fruits.shift(); // حذف من البداية
fruits.splice(1, 1); // حذف عنصر من موضع معيّن
الدوال التحويلية الأهم 🌟
forEach — تنفيذ على كل عنصر
fruits.forEach(fruit => console.log(fruit));
map — تحويل لمصفوفة جديدة
let nums = [1, 2, 3];
let doubled = nums.map(n => n * 2); // [2, 4, 6]
filter — ترشيح بشرط
let evens = [1, 2, 3, 4].filter(n => n % 2 === 0); // [2, 4]
reduce — تجميع لقيمة واحدة
let sum = [1, 2, 3, 4].reduce((total, n) => total + n, 0); // 10
find و some و every
[1, 2, 3].find(n => n > 1) // 2 (أول مطابق)
[1, 2, 3].some(n => n > 2) // true (هل يوجد مطابق؟)
[1, 2, 3].every(n => n > 0) // true (هل كلها مطابقة؟)
دوال مفيدة أخرى
[3, 1, 2].sort() // [1, 2, 3]
[3, 1, 2].sort((a, b) => b - a) // [3, 2, 1] تنازلي
[1, 2, 3].reverse() // [3, 2, 1]
[1, 2, 3].includes(2) // true
[1, 2, 3].join(" - ") // "1 - 2 - 3"
[1, 2].concat([3, 4]) // [1, 2, 3, 4]
النسخ والدمج بـ Spread
let copy = [...fruits];
let merged = [...arr1, ...arr2];
الأخطاء الشائعة
- ❌ نسيان أن الفهرس يبدأ من 0 →
arr[1]هو العنصر الثاني. - ❌ الخلط بين
mapوforEach→mapتُرجع مصفوفة جديدة،forEachلا. - ❌
sort()للأرقام بلا دالة مقارنة → يرتّبها كنصوص (10قبل2)! استخدم(a,b)=>a-b.
خلاصة
المصفوفات قوائم مرتّبة. أتقن push/pop، ثم الدوال التحويلية القوية map وfilter وreduce وfind — هي جوهر معالجة البيانات في JavaScript الحديثة.