المصفوفات – Array

المصفوفة: المصفوفة هي هيكل بيانات أساسي في جافا سكريبت يسمح بتخزين مجموعة من القيم (عناصر) في متغير واحد.

هذه القيم تكون مرتبة، ولكل قيمة “فهرس” (index) رقمي فريد يحدد موقعها.

الفهرسة تبدأ دائمًا من الصفر.

المصفوفات في جافا سكريبت مرنة جدًا ويمكن أن تحتوي على أنواع بيانات مختلفة (أرقام، سلاسل نصية، كائنات، وحتى مصفوفات أخرى) في نفس المصفوفة.

لماذا نستخدمها؟

لتنظيم مجموعات من البيانات ذات الصلة والتعامل معها بكفاءة (مثل قائمة المستخدمين، درجات الطلاب، أسعار المنتجات).

لتخزين عدد كبير من البيانات بسهولة.

لتكرار العمليات على عناصر متعددة بكود قصير.

لتسهيل ترتيب البيانات والبحث فيها.

مثال:

// مصفوفة تحتوي على أرقام
let grades = [90, 85, 92, 78];

// مصفوفة تحتوي على سلاسل نصية
let names = ["أحمد", "فاطمة", "علي"];

let mixed = [10, "Hello", true, null];    // أنواع مختلفة
JavaScript

إنشاء المصفوفات (Creating Arrays):

الشرح: هناك طريقتان رئيسيتان لإنشاء مصفوفة:

  • الصيغة الحرفية (Array Literal []): الطريقة الأكثر شيوعًا والموصى بها. بسيطة وواضحة.
  • الكلمة المفتاحية new Array(): أقل شيوعًا ويمكن أن تكون مربكة قليلاً.

أمثلة:

// الطريقة المفضلة: الصيغة الحرفية
let fruits = ["تفاح", "موز", "برتقال"];
let emptyArray = [];
let numbers = [1, 5, 10];

// استخدام new Array()
let colors = new Array("أحمر", "أخضر", "أزرق"); // يكافئ: ["أحمر", "أخضر", "أزرق"]

// حالة خاصة لـ new Array(): عند تمرير رقم واحد فقط
let sizedArray = new Array(5); // ينشئ مصفوفة فارغة بطول 5 (مصفوفة متفرقة)
                
JavaScript

الوصول إلى عناصر المصفوفة (Accessing Array Elements):

الشرح: يتم الوصول إلى عنصر معين في المصفوفة باستخدام الفهرس الخاص به داخل الأقواس المربعة []. تذكر أن الفهرس الأول هو 0.

let animals = ["قطة", "كلب", "أرنب", "هامستر"];

console.log(animals[0]); // قطة
console.log(animals[2]); // أرنب

let lastIndex = animals.length - 1;
console.log(animals[lastIndex]); // هامستر (طريقة شائعة للوصول للعنصر الأخير)

// الوصول إلى فهرس غير موجود
console.log(animals[10]); // undefined (لا يسبب خطأ، بل يرجع undefined)

// الوصول باستخدام الطريقة الحديثة .at() (تدعم الفهارس السالبة)
console.log(animals.at(1));  // كلب
console.log(animals.at(-1)); // هامستر (آخر عنصر)
console.log(animals.at(-2)); // أرنب (العنصر قبل الأخير)
/////////////////////////////////////////
let fruits = ["Apple", "Banana", "Mango"];
console.log(fruits[0]); // Apple
console.log(fruits[1]); // Banana
JavaScript
  • الوصول لفهرس خارج حدود المصفوفة (أكبر من أو يساوي الطول، أو سالب باستخدام []) يرجع undefined.
  • الطريقة .at(index) أضيفت في ES2022 وهي مفيدة جدًا للوصول للعناصر من نهاية المصفوفة باستخدام فهارس سالبة، وهو أمر شائع في لغات أخرى مثل بايثون.
❗ ماذا يحدث إذا حاولت الوصول لمكان غير موجود؟
let list = ["A", "B"];
console.log(list[5]);  // undefined
///لأن هذا العنصر غير موجود.
JavaScript

✅ هل يمكن أن تكون المصفوفة فارغة؟

let emptyArray = [];
console.log(emptyArray.length); // 0
JavaScript

🔸 ما هو length في المصفوفات؟
length هو خاصية تُستخدم لمعرفة عدد العناصر الموجودة داخل المصفوفة.

مثال:

let fruits = ["Apple", "Banana", "Mango"];
console.log(fruits.length); // 3
JavaScript

🟡 الناتج هو 3 لأن المصفوفة تحتوي على 3 عناصر.

أمثلة إضافية:

let emptyList = [];
console.log(emptyList.length); // 0

let students = ["Ali", "Sara", "John", "Mona"];
console.log("عدد الطلاب هو: " + students.length); // 4
JavaScript
let tools = ["مطرقة", "مفك", "كماشة"];
console.log(tools.length); // 3

// تقليص المصفوفة
tools.length = 2;
console.log(tools); // ["مطرقة", "مفك"] (تم حذف "كماشة")
console.log(tools.length); // 2

// توسيع المصفوفة (إنشاء فجوات)
tools.length = 5;
console.log(tools); // ["مطرقة", "مفك", <3 empty items>]
console.log(tools.length); // 5
console.log(tools[3]); // undefined

// طريقة سريعة لتفريغ مصفوفة
tools.length = 0;
console.log(tools); // []
console.log(tools.length); // 0
JavaScript
  • length تساوي دائمًا أعلى فهرس + 1.
  • تعيين length إلى قيمة أصغر من الطول الحالي يحذف العناصر من النهاية بشكل دائم.
  • تعيين length إلى قيمة أكبر ينشئ مصفوفة بعناصر فارغة.
  • تعيين length إلى 0 هو طريقة شائعة لمسح محتويات مصفوفة موجودة.

🔸 استخدام length مع آخر عنصر: إذا أردت الوصول إلى آخر عنصر في المصفوفة:

let colors = ["Red", "Green", "Blue"];
let last = colors[colors.length - 1];
console.log(last); // Blue
JavaScript

📌 نستخدم length - 1 لأن الفهرسة تبدأ من 0.

🔸 فوائد length:

الفائدةالشرح
معرفة عدد العناصرلتكرار أو تحديد الكمية
الوصول إلى آخر عنصرباستخدام length - 1
التحقق من أن المصفوفة ليست فارغةif (array.length > 0)
✅ تطبيق عملي:
let tasks = ["HTML", "CSS", "JavaScript"];
console.log("عدد المهام: " + tasks.length);
console.log("المهمة الأخيرة: " + tasks[tasks.length - 1]);
JavaScript