المصفوفات
مفهوم المصفوفات في جافاسكربت
المصفوفة ( Array ) عبارة عن سلسلة من العناصر، كل عنصر فيها يملك قيمة و رقم ترتيب خاص به يعطى له بشكل تلقائي.
في جافاسكربت المصفوفة عبارة عن كائن و بالتالي فهي تندرج تحت النوع
في هذا الدرس ستتعرف على جميع الطرق التي يمكنك من خلالها تعريف مصفوفات، بالإضافة إلى الدوال الجاهزة التي يمكنك استخدامها للتعامل معها.
تعريف مصفوفة في جافاسكربت
في جافاسكربت يمكنك تعريف المصفوفة بواسطة الرمز
// [] الشكل العام لتعريف مصفوفة بواسطة الرمز
let arrayName = [element0, element1, ..., elementN];
// Array() الشكل العام لتعريف مصفوفة بواسطة الكونستركتور
let arrayName = new Array(element0, element1, ..., elementN);
يفضّل تعريف المصفوفة بواسطة الرمز
في المثال التالي قمنا بتعريف مصفوفة باستخدام الرمز
المثال الأول
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها ثلاث قيم
let countries = ['Algeria', 'Egypt', 'Lebanon'];
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(countries);
</script>
</body>
</html>
في المثال التالي قمنا بتعريف مصفوفة باستخدام الكونستركتور
المثال الثاني
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها ثلاث قيم
let countries = new Array('Algeria', 'Egypt', 'Lebanon');
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(countries);
</script>
</body>
</html>
في المثال التالي قمنا بتعريف مصفوفة على عدة أسطر.
المثال الثالث
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها ثلاث قيم
let countries = [
'Algeria',
'Egypt',
'Lebanon'
];
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(countries);
</script>
</body>
</html>
في المثال التالي قمنا بتعريف مصفوفة فارغة و من ثم قمنا بإضافة العناصر فيها.
المثال الرابع
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فارغة
let countries = [];
// هنا قمنا بإضافة قيم في عناصر محددة في المصفوفة
countries[0] = 'Algeria';
countries[1] = 'Egypt';
countries[2] = 'Lebanon';
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(countries);
</script>
</body>
</html>
في المثال التالي قمنا بتعريف مصفوفة تحتوي على قيم من مختلف الأنواع.
المثال الخامس
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها ثلاث قيم
let data = ['codafox.blogspot.com', true, 1000];
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(data);
</script>
</body>
</html>
الوصول لعناصر المصفوفة في جافاسكربت
عناصر المصفوفة يتم تخزينها فيها بذات الترتيب الذي يتم وضعها فيه حيث أن كل عنصر فيها يتم إعطاؤه رقم فهرس (Index) بشكل تلقائي يحدد موقعه فيها. و رقم فهرس العنصر الأول في المصفوفة هو
الآن لنفترض أننا قمنا بتعريف مصفوفة إسمها
let a = [10, 20, 30, 40, 50];
يمكنك أن تتصور أن العناصر مرتبة في المصفوفة
بما أن المصفوفة تتألف من 5 عناصر، نلاحظ أنه تم فهرسة العناصر بالترتيب من 0 إلى 4.
في المثال التالي قمنا بتعريف مصفوفة تتألف من 5 عناصر و من ثم قمنا بطباعة قيمة كل عنصر فيها على سطر منفرد.
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// هنا قمنا بعرض القيمة الموجودة في
// كل عنصر في المصفوفة على سطر منفرد
document.write(arr[0] + '<br>');
document.write(arr[1] + '<br>');
document.write(arr[2] + '<br>');
document.write(arr[3] + '<br>');
document.write(arr[4] + '<br>');
</script>
</body>
</html>
الخاصية length
بواسطة هذه الخاصية يمكنك معرفة عدد عناصر المصفوفة.
في المثال التالي قمنا بتعريف مصفوفة، بعدها قمنا بطباعة عدد العناصر الموجودة فيها.
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// هنا قمنا بطباعة عدد العناصر الموجودة فيها
document.write('Total elements = ' + arr.length);
</script>
</body>
</html>
الوصول لآخر عنصر في المنصفوفة
رقم فهرس آخر عنصر في المصفوفة يساوي عدد عناصرها ناقص واحد، أي
في المثال التالي قمنا بتعريف مصفوفة، بعدها قمنا بطباعة قيمة آخر عنصر فيها و عدد العناصر الموجودة فيها.
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// arr[4] هنا قمنا بطباعة قيمة العنصر الأخير في المصفوفة، أي العنصر
document.write('Last element value = ' + arr[arr.length-1]);
</script>
</body>
</html>
المرور على عناصر المصفوفة بوسطة الحلقة for
في المثال التالي قمنا بإنشاء حلقة
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// سيتم طباعة قيمة for في كل دورة من دورات الحلقة
// على سطر منفرد arr العنصر التالي في المصفوفة
for (let i = 0; i<arr.length; i++) {
document.write(arr[i] + '<br>');
}
</script>
</body>
</html>
المرور على عناصر المصفوفة بوسطة الحلقة for in
في المثال التالي قمنا بإنشاء حلقة
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// سيتم وضع رقم فهرس العنصر التالي في for في كل دورة من دورات الحلقة
// و من ثم طباعة قيمة العنصر الموجود عنده على سطر منفرد arr المصفوفة
for (let i in arr) {
document.write(arr[i] + '<br>');
}
</script>
</body>
</html>
الحلقة
المرور على عناصر المصفوفة بوسطة الحلقة for of
في المثال التالي قمنا بإنشاء حلقة
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// سيتم وضع قيمة العنصر for في كل دورة من دورات الحلقة
// و من ثم طباعته على سطر منفرد arr التالي في المصفوفة
for (let element of arr) {
document.write(element + '<br>');
}
</script>
</body>
</html>
الحلقة
تغيير قيم عناصر المصفوفة في جافاسكربت
تغيير قيمة العنصر تتم أولاً من خلال الوصول إليه بواسطة رقم الفهرس الخاص به و من ثم إسناد القيمة له بواسطة الرمز
في المثال التالي قمنا بتغيير قيم العنصر الأول، الثاني و الأخير في المصفوفة، ثم قمنا بعرض قيم جميع العناصر.
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة فيها 5 قيم
let arr = [10, 20, 30, 40, 50];
// هنا قمنا بتغيير قيمة العنصر الأول
arr[0] = 1;
// هنا قمنا بتغيير قيمة العنصر الثاني
arr[1] = 2;
// هنا قمنا بتغيير قيمة العنصر الأخير
arr[arr.length - 1] = arr.length; // arr[4] = 5
// هنا قمنا بعرض جميع قيم المصفوفة
document.write(arr);
</script>
</body>
</html>
في حال كانت المصفوفة مخزّنة في متغيّر نوعه
في المثال التالي قمنا بتعريف المصفوفة كمصفوفة ثابتة، ثم حاولنا تعريفها من جديد، ثم حاولنا عرض قيمها.
مثال
<!DOCTYPE html>
<html>
<body>
<script>
// هنا قمنا بتعريف مصفوفة ثابتة
const arr = [10, 20, 30, 40, 50];
// هنا حاولنا إعادة تعريف مصفوفة ثابتة و هذا الأمر سيسبب مشكلة
const arr = [10, 20, 30, 40, 50];
// هذا الأمر لن يتنفذ بسبب المشكلة التي ستحصل عند تنفيذ الأمر السابق
document.write(arr);
</script>
</body>
</html>
عند تجربة الكود في المتصفح فإن الكود السابق لن يظهر أي نتيجة عند تشغيله و لكنه يظهر الخطأ التالي في الكونسول.
دوال المصفوفات في جافاسكربت
فيما يلي جميع الدوال المتوفرة التي يمكنك استخدامها للتعامل مع المصفوفات.
إسم الدالة مع تعريفها | |
---|---|
1 | |
2 | |
3 | في حال لم يتم تمرير قيمة مكان الباراميتر |
4 | مكان الباراميتر في حال تم تمرير رقم أصغر من صفر لها فإنها ستبدأ بشكل عكسي، فمثلاً |
5 | |
6 | |
7 | |
8 | مكان الباراميتر |
9 | ترجع |
10 | |
11 | ترجع القيمة |
12 | ترجع القيمة |
13 | |
14 | |
15 | ترجع |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | مكان الباراميتر |
22 | |
23 | |
24 | |
25 | كل عنصر تحتويه هذه النسخة يتضمن رقم فهرس العنصر و قيمته. |
26 | مكان الباراميتر في حال استدعائها على مصفوفة فارغة و لم يتم تمرير قيمة أولية لها فإنها ستسبب الخطأ Uncaught TypeError: reduce of empty array with no initial value |
27 | مكان الباراميتر في حال استدعائها على مصفوفة فارغة و لم يتم تمرير قيمة أولية لها فإنها ستسبب الخطأ Uncaught TypeError: reduce of empty array with no initial value |
28 | مكان الباراميتر |
29 | مكان الباراميتر |
30 | في حال لم تجد عنصر يملك قيمة تستوفي الشرط فإنها ترجع القيمة عملية البحث في هذه الدالة تتم بأسلوب الإستدعاء الذاتي لذلك فإننا مكان الباراميتر |
31 | في حال لم تجد عنصر يملك قيمة تستوفي الشرط فإنها ترجع القيمة عملية البحث في هذه الدالة تتم بأسلوب الإستدعاء الذاتي لذلك فإننا مكان الباراميتر |
32 | في حال لم تجد عنصر يملك قيمة تستوفي الشرط فإنها ترجع القيمة عملية البحث في هذه الدالة تتم بأسلوب الإستدعاء الذاتي لذلك فإننا مكان الباراميتر |
33 | مكان الباراميتر مكان الباراميتر |
34 | مكان الباراميتر مكان الباراميتر |
35 | مكان الباراميتر |
36 | مكان الباراميتر |
37 | مكان الباراميتر |
38 | مثلاً إذا كانت المصفوفة ثنائية الأبعاد، فإنه يمكن استخدام هذه الدالة للحصول على نسخة أحادية الأبعاد منها. معلومة: النسخة التي ترجعها من المصفوفة الأساسية ترجعها خالية من أي عناصر فارغة. |