١٥ ديسمبر ٢٠٢١

المصفوفات

تسمح لك الكائنات بتخزين مجموعه من المفاتيح ذات قيم .الي الان هذا جيد .

ولكن في كثير من الأحيان نجد أننا بحاجة إلى مجموعة مرتبة, حيث لدينا عنصر الأول والثاني والثالث وما إلى ذلك. علي سبيل المثال, نحن نحتاج الي تخزين مجموعه من الشياء: مسخدمين, بضائع, عناصر HTML الخ.

ليس من المناسب ان نستخدم كائن هنا, لانه لايمتلك اي وسائل او طرق لترتيب العناصر. لايمكنا ادراج خاصيه جديده “بين” الموجوده بالفعل. الكائنات ليست معده لهذا الاستخدام فقط.

يوجد هيكل بيانات خاص يسمي Array, لتخزين المجموعات المرتبه.

الاعلان

هناك طريقتين لإنشاء مصفوفه فارغه:

let arr = new Array();
let arr = [];

في جميع الأوقات تقريبًا ، يتم استخدام بناء الجملة الثاني. يمكننا توفير العناصر الأولية في الأقواس:

let fruits = ["البرقوق", "البرتقال", "التفاح"];

يتم ترقيم عناصر المصفوفه ، بدءًا من صفر. يمكننا الحصول على عنصر من خلال الترقيم بين قوسين معقوفين:

let fruits = ["البرقوق", "البرتقال", "التفاح"];

alert( fruits[0] ); // التفاح
alert( fruits[1] ); // البرتقال
alert( fruits[2] ); // البرقوق

يمكننا استبدال عنصر:

fruits[2] = 'الكمثري'; // الآن ["التفاح", "البرتقال", "الكمثري"]

…او اضف واحد جديد الي المصفوفه :

fruits[3] = 'الليمون'; // الآن ["الليمون", "الكمثري", "البرتقال", "التفاح"]

العدد الإجمالي للعناصر في المصفوفه هو length:

let fruits = ["البرقوق", "البرتقال", "التفاح"];

alert( fruits.length ); // 3

يمكن ان نستخدم alert حتي نعرض المصفوفه كامله.

let fruits = ["البرقوق", "البرتقال", "التفاح"];

alert( fruits ); // البرقوق,البرتقال,التفاح

يمكن للمصفوفه ان تخزن عناصر من جميع الانواع.

على سبيل المثال:

// مزيج من القيم
let arr = [ 'التفاح', { name: 'جوهان' }, true, function() { alert('اهلا'); } ];

// احصل على الكائن في الفهرس 1 ثم إظهار اسمه
alert( arr[1].name ); // جوهان

// احصل على الكائن في الفهرس 3 ثم إظهار اسمه
arr[3](); // اهلا
الفاصلة اللاحقة

المصفوفه ، تمامًا مثل الكائن ، قد تنتهي بفاصلة:

let fruits = [
  "التفاح",
  "البرتقال",
  "البرقوق",
];

يسهّل نمط “الفاصلة اللاحقة” إدراج / إزالة العناصر ، لأن جميع الخطوط متشابهة.````

وسائل pop/push, shift/unshift

الطابور هو أحد الاستخدامات الأكثر شيوعًا للمصفوفة. في علوم الحاسب, هذا يعني مجموعة مرتبة من العناصر التي تدعم عمليتين:

  • pushإلحاق عنصر إلي النهاية.
  • shift احصل على عنصر من البداية ، بدفع قائمة الانتظار ، بحيث يصبح العنصر الثاني هو الأول.

تدعم المصفوفات كلا من العمليتين. في الممارسة العملية نحن بحاجة إليها في كثير من الأحيان. على سبيل المثال ،مجموعه الرسائل التي يجب عرضها على الشاشة. هناك حالة استخدام أخرى للمصفوفات – هيكل البيانات يسمي stack.

يدعم عمليتين:

  • push يضيف عنصرًا إلى النهاية.
  • pop يأخذ عنصر من النهاية.

لذلك يتم إضافة عناصر جديدة أو أخذها دائمًا من “النهايه”.

الكومه(stack) عادة ما يتم توضيحها كحزمة من البطاقات: تتم إضافة بطاقات جديدة إلى الأعلى أو مأخوذة من الأعلى:

بالنسبه للكومه(stacks), يتم استلام أحدث عنصر مدفوع أولاً ، وهذا ما يسمى بمبدأ LIFO (Last-In-First-Out). بالنسبة لقوائم الانتظار ، لدينا FIFO (First-In-First-Out).

يمكن أن تعمل المصفوفات في JavaScript كقائمة انتظار وكمجموعة(stack). تتيح لك إضافة / إزالة عناصر من / إلى البداية أو النهاية.

في علم الحاسوب يسمى هيكل البيانات الذي يسمح بذلك deque.

الأساليب التي تعمل مع نهاية المصفوفه:

pop :تعمل علي استخراج العنصر الأخير من المصفوفة وتعيده :

```js run
 ;["الكمثري", "البرتقال", "التفاح"] = let fruits

 ;alert( fruits.pop() ) // قم بإزاله "الكمثري" وقم بالعرض في تنبيه

 ;alert( fruits ) // البرتقال, التفاح
```
push

ألحق العنصر بنهاية المصفوفة: