✨ الدليل الشامل

شرح المصفوفات (Arrays) في JavaScript

تخيل أن المصفوفة (Array) مثل "خزانة أدراج مرقمة". كل درج له رقم، وتضع فيه ألعابك. المهم أنك تعرف في أي درج وضعت اللعبة لتسترجعها بسهولة.

01

تعريف المصفوفة كائن خاص ومرتب (Ordered & Indexed Object)

📦
تخيل المصفوفة كقائمة أو خزانة ذات أدراج مرقمة، حيث يمكنك وضع أي نوع من البيانات في كل درج (أرقام، نصوص، كائنات، وحتى دوال).
📦
المصفوفة هي "كائن" (Object) عملاق، يحتوي على قطع صغيرة بداخله.

ما يميزها هو النظام الصارم: اللعبة الأولى تظل في المكان الأول، والثانية في المكان الثاني.

خصائص المصفوفة:

  • مرتبة (Ordered): العناصر لها ترتيب محدد يبدأ من الفهرس (Index) صفر.
  • ديناميكية (Dynamic): حجمها يتغير تلقائياً عند الإضافة أو الحذف.
  • غير محددة النوع: يمكنها تخزين أنواع مختلفة في نفس المصفوفة.
  • تمرير بالمرجع (Pass by Reference): تغيير النسخة قد يؤثر على الأصل.
// هذا مثال لمصفوفة بسيطة
// قمنا بإنشاء خزانة اسمها "toys" ووضعنا فيها 3 ألعاب
const toys = ["Car", "Doll", "Ball"];
                
// طبعاً المصفوفة نفسها تعتبر "كائن" (Object) لكنه ذكي ومرتب
console.log(toys); // سيطبع: ["Car", "Doll", "Ball"]
02

إنشاء المصفوفة طرق بناء الخزانة (Creation Methods)

🛠️
هناك طريقتان لصناعة الخزانة (المصفوفة). واحدة جيدة جداً والأخرى تحتاج حذر.

الطريقة الأولى: الأقواس [ ]

الأفضل والأكثر أماناً، كأنك تجمع أدواتك في حقيبة بسرعة.

// استخدمنا const لإنشاء ثابت اسمه myFavColors
// القوسين [ ] يخبران الكمبيوتر: "اصنع لي مصفوفة جديدة"
const myFavColors = ["Red", "Blue", "Green"];
                        
// الآن لدينا مصفوفة جاهزة ومليئة بالألوان
console.log(myFavColors);  // Red  Blue  Green 

⚠️ الطريقة الثانية: new Array()

تحتاج حذر! الكمبيوتر يلعب بنا لعبة عندما نمرر رقماً واحداً.

const riskyArray = new Array(5); 
// [empty × 5] (خمس خانات فارغة)
    
const correctArray = new Array();
correctArray[0] = 5; // النتيجة: [5]
03

الفهرسة (Indexing) العد يبدأ من الصفر

هذا أهم سر في البرمجة! في حياتنا نعد: 1، 2، 3... لكن في الكمبيوتر نعد: 0، 1، 2... اللعبة الأولى في المكان رقم 0.
const animals = ["Cat", "Dog", "Lion"];
            
// للوصول لأي لعبة، نكتب اسم المصفوفة ثم رقم مكانها
console.log(animals[0]); // "Cat" (الحيوان الأول)
console.log(animals[1]); // "Dog" (الحيوان الثاني)
console.log(animals[2]); // "Lion" (الحيوان الثالث)
            
console.log(animals[animals.length - 1]); // الوصول لآخر عنصر

// ماذا لو طلبنا مكان غير موجود؟
console.log(animals[10]); // undefined
04

الخاصية length طول المصفوفة

length يعطيك "رقم" يخبرك كم مكان في الخزانة. وهو (آخر رقم فهرس + 1). يمكننا أيضاً تغيير حجم الخزانة بالقوة!

سحر تغيير الحجم

const numbers = [10, 20, 30, 40];
                
// length تسأل المصفوفة: كم طولك؟
console.log(numbers.length); // 4
                
// --- السحر: تغيير الحجم ---
                
// 1. تكبير المصفوفة
numbers.length = 6;
// النتيجة: [10, 20, 30, 40, empty × 2]
                
// 2. تصغير المصفوفة (حذف نهائي!)
numbers.length = 2;
// النتيجة: [10, 20]
05

التحقق من النوع Array.isArray() مقابل typeof

typeof

أداة "غبية" تقول عن المصفوفة "object" فقط.

Array.isArray()

أداة "ذكية" تعرف المصفوفة بدقة مطلقة.

const myArr = [1, 2, 3];
const myObj = { name: "Ali" };
            
// 1. تجربة typeof (الأداة الغبية)
console.log(typeof myArr);  // "object" ❌
console.log(typeof myObj);  // "object" ❌
            
// 2. تجربة Array.isArray() (الأداة الذكية)
console.log(Array.isArray(myArr)); // true ✅
console.log(Array.isArray(myObj)); // false ✅
Array.from()

تحويل النصوص أو الـ NodeList إلى مصفوفة حقيقية.


let chars = Array.from("Hello"); // ['H','e','l','l','o']