"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > مصفوفات جافا سكريبت

مصفوفات جافا سكريبت

تم النشر بتاريخ 2024-08-28
تصفح:338

JavaScript Arrays

ما هي المصفوفات؟

المصفوفات هي بنية بيانات تقوم بتخزين مجموعة مرتبة من العناصر. في JavaScript، يتم تصنيف المصفوفات كنوع خاص من الكائنات ويمكنها تخزين الأرقام أو السلاسل أو الكائنات أو المصفوفات الأخرى. يتم وضع العناصر الموجودة في المصفوفة بين قوسين مربعين [ ] وتستخدم فهرسًا صفريًا. الفهرس الصفري يعني أن العنصر الأول في المصفوفة سيكون له فهرس 0، والعنصر الثاني سيكون له فهرس 1، وهكذا.

const names = ["David", "Hannah", "William"];
console.log(names[0]); // returns the first element
// returns "David"
console.log(names[1]); // returns the second element
// returns "Hannah"
console.log(names[2]); // returns the third element
// returns "William"

كيف يمكن تعديل المصفوفات أو معالجتها؟

فهرس العنصر في صفيف

يمكن إضافة عنصر جديد إلى مصفوفة عن طريق تعيين قيمة لفهرس فارغ.

names[3] = "Eric";
console.log(names);
// returns ["David", "Hannah", "William", "Eric"]

يمكن تعديل العناصر الموجودة في المصفوفة عن طريق إعادة تعيين قيمة جديدة إلى فهرس موجود.

names[1] = "Juniper";
console.log(names);
// returns ["David", "Juniper", "William", "Eric"]

طرق المصفوفة

يمكن أيضًا تعديل المصفوفات أو معالجتها بطرق المصفوفة مثل "push" و"pop" و"unshift" و"shift" و"slice" و"splice".

'يدفع()'

يأخذ أسلوب "الدفع" عنصرًا واحدًا أو أكثر كوسيطات، ويضيف العناصر إلى نهاية المصفوفة، ويعيد طول المصفوفة المعدلة.

names.push("Bob");
// returns 5 
console.log(names);
// returns ["David", "Juniper", "William", "Eric", "Bob"]

"البوب ​​()"

الطريقة 'pop' لا تأخذ أي وسيطات، وتزيل العنصر الأخير من المصفوفة، وترجع العنصر المحذوف.

names.pop();
// returns "Bob"
console.log(names);
// returns ["David", "Juniper", "William", "Eric"]

"إلغاء النقل ()"

يأخذ الأسلوب "unshift" عنصرًا واحدًا أو أكثر كوسيطات، ويضيف العناصر إلى بداية المصفوفة، ويعيد طول المصفوفة المعدلة.

names.unshift("Jack", "Jane");
// returns 6
console.log(names);
// returns ["Jack", "Jane", "David", "Juniper", "William", "Eric"]

'يحول()'

الطريقة 'shift' لا تأخذ أي وسائط، وتزيل العنصر الأول من المصفوفة، وترجع العنصر المحذوف.

names.shift();
// returns "Jack"
console.log(names);
// returns ["Jane", "David", "Juniper", "William", "Eric"]

'شريحة()'

تأخذ الطريقة "slice" وسيطتين اختياريتين (startIndex وendIndex) وترجع مصفوفة جديدة تحتوي على العناصر من startIndex إلى endIndex للمصفوفة الأصلية، ولكن لا تتضمنها.
إذا تم حذف startIndex، يتم استخدام 0.
إذا تم حذف endIndex، فسيتم استخدام طول الصفيف. يمكن استخدام أرقام الفهرس السالبة للعد التنازلي من نهاية المصفوفة.

names.slice(1, 3);
// returns ["David", "Juniper"]
names.slice(3);
// returns ["Juniper", "William", "Eric"]
names.slice(-2, 1);
// returns ["William", "Eric", "Jane"]
names.slice();
// returns ["Jane", "David", "Juniper", "William", "Eric"]

'لصق()'

تأخذ طريقة "splice" وسيطة واحدة أو أكثر (startIndex، وdeleteCount، و element1، و element2، ...) وتقوم بإرجاع مصفوفة جديدة تحتوي على جميع العناصر التي تمت إزالتها. من startIndex، يتم حذف عدد العناصر المحذوفة وستتم إضافة وسيطات العناصر التالية إلى المصفوفة بدءًا من startIndex. إذا تم حذفdeleteCount، فسيتم حذف كافة العناصر من startIndex إلى نهاية المصفوفة. إذا تم حذف وسيطات العنصر، فلن تتم إضافة أي عناصر.

names.splice(0, 1, "Joe", "Alex"); 
// returns ["Jane"]
console.log(names);
// returns ["Joe", "Alex", "David", "Juniper", "William", "Eric"]
names.splice(1, 4);
// returns ["Alex", "David", "Juniper", "William"]
console.log(names);
// returns ["Joe", "Eric"]
names.splice(0, 0, "Bob", "Frank", "Maria")
// returns []
console.log(names);
// returns ["Joe", "Bob", "Frank", "Maria", "Eric"]

نظرًا لأن "push" و"pop" و"unshift" و"shift" و"splice" تعدّل المصفوفة الأصلية، فقد تم تصنيفها على أنها طرق مدمرة. طريقة "الشريحة" تترك المصفوفة الأصلية سليمة، لذلك يتم تصنيفها على أنها غير مدمرة.

عامل الانتشار '...'

لإضافة عناصر إلى مصفوفة أو نسخها بشكل غير مدمر، يمكن استخدام عامل الانتشار. يقوم عامل الانتشار بنشر مصفوفة في عناصرها.

const array = [1, 2, 3];
const newArray = [0, ...array, 4, 5];
// ...array spreads [1, 2, 3] into 1, 2, 3
console.log(newArray);
// returns [1, 2, 3, 4, 5]

بدون عامل الانتشار، سيتم دمج المصفوفة الأصلية داخل المصفوفة الجديدة.

const array = [1, 2, 3];
const newArray = [0, array, 4, 5];
console.log(newArray);
// returns [0, [1, 2, 3], 4, 5];

طرق المصفوفة التكرارية

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

function callbackFunction (currentElement, currentIndex, originalArray) {
// function body
}

بعض الأمثلة على أساليب المصفوفة التكرارية هي: 'find' و'filter' و'map' و'reduce'.

'يجد()'

يأخذ أسلوب "البحث" دالة كوسيطة ويعيد العنصر الأول في المصفوفة الذي يستوفي شروط الوظيفة.

const numbers = [5, 10, 15, 20, 25];
numbers.find(number => number > 15);
// returns 20;

'فلتر()'

طريقة "الفلتر" مشابهة لطريقة "البحث"، ولكنها تقوم بدلاً من ذلك بإرجاع مصفوفة من كافة العناصر التي تلبي شروط الوظيفة المحددة.

const numbers = [5, 10, 15, 20, 25];
numbers.filter(number => number > 15);
// returns [20, 25];

'رسم خريطة()'

يُرجع الأسلوب 'map' مصفوفة جديدة مع نتائج استدعاء الوظيفة على كل عنصر في المصفوفة الأصلية.

const numbers = [1, 2, 3, 4, 5];
numbers.map(number => number * number);
// returns [1, 4, 9, 16, 25]

'يقلل()'

تأخذ طريقة "التقليل" دالة وقيمة أولية كوسيطة. تتلقى الدالة المتوفرة أربع وسائط: المركب، والقيمة الحالية، والفهرس الحالي، والمصفوفة الأصلية. القيمة الأولية المقدمة هي قيمة المجمع للعنصر الأول في المصفوفة. يتم استخدام نتيجة الدالة لكل عنصر كقيمة المركب للعنصر التالي في المصفوفة. إذا لم يتم توفير قيمة أولية، فسيتم تعيين المجمع على العنصر الأول من المصفوفة ويتم استدعاء وظيفة رد الاتصال بدءًا من العنصر الثاني.

const numbers = [1, 2, 3, 4, 5]
numbers.reduce(((acc, number) => acc   number), 0);
// returns 15
بيان الافراج هذه المقالة مستنسخة على: https://dev.to/jae_jeong_56b53bffb105974/javascript-arrays-3hhp?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3