المصفوفات في جافا سكريبت. استخدام الطول لقص المصفوفة

15.08.2023

المصفوفات

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

تبدأ فهارس مصفوفات جافا سكريبت من الصفر وتستخدم أعدادًا صحيحة 32 بت - العنصر الأول في المصفوفة يحتوي على فهرس 0. مصفوفات جافا سكريبت ديناميكية: يمكن أن تنمو وتتقلص في الحجم حسب الحاجة؛ ليست هناك حاجة للإعلان عن أحجام مصفوفات ثابتة عند إنشائها، أو لإعادة تخصيص الذاكرة عندما تتغير أحجامها.

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

إنشاء المصفوفات

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

فار فارغ = ; // مصفوفة فارغة var number = ; // مصفوفة بخمسة عناصر رقمية var Misc = [ 1.1, true, "a", ]; // 3 عناصر من أنواع مختلفة + فاصلة زائدة var base = 1024; جدول فار = ; // مصفوفة ذات متغيرات var arrObj = [, ]; // 2 صفائف تحتوي على كائنات

يتيح لك بناء الجملة الحرفي للصفيف إدراج فاصلة زائدة اختيارية، على سبيل المثال. الحرفي [،] يطابق مصفوفة تحتوي على عنصرين، وليس ثلاثة.

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

    استدعاء المنشئ بدون وسائط:

    var arr = new Array();

    في هذه الحالة، سيتم إنشاء مصفوفة فارغة، أي ما يعادل المصفوفة الحرفية.

    اتصل بالمنشئ باستخدام وسيطة رقمية واحدة تحدد طول المصفوفة:

    var arr = new Array(10);

    في هذه الحالة، سيتم إنشاء مصفوفة فارغة بالطول المحدد. يمكن استخدام هذا النوع من استدعاء مُنشئ Array() لتخصيص الذاكرة مسبقًا لمصفوفة إذا كان عدد عناصرها معروفًا مسبقًا. لاحظ أن هذا لا يخزن أي قيم في المصفوفة.

    حدد بوضوح قيم أول عنصرين أو أكثر من عناصر المصفوفة أو عنصر واحد غير رقمي في استدعاء المنشئ:

    var arr = new Array(5, 4, 3, 2, 1, "test");

    في هذه الحالة، تصبح الوسائط الخاصة بالمنشئ هي قيم عناصر المصفوفة الجديدة. يعد استخدام القيم الحرفية للمصفوفة دائمًا أسهل من استخدام مُنشئ Array().

قراءة وكتابة عناصر المصفوفة

يتم الوصول إلى عناصر المصفوفة باستخدام عامل التشغيل. على يسار الأقواس يجب أن يكون هناك مرجع للصفيف. يجب أن يكون هناك تعبير عشوائي داخل الأقواس يُرجع قيمة عددية غير سالبة. يعد بناء الجملة هذا مفيدًا لقراءة وكتابة قيمة عنصر المصفوفة. لذلك، جميع تعليمات JavaScript التالية صالحة:

// أنشئ مصفوفة بعنصر واحد var arr = ["world"]; // قراءة العنصر 0 var value = arr; // اكتب القيمة للعنصر 1 arr = 3.14; // اكتب القيمة للعنصر 2 i = 2; آر[i] = 3; // اكتب القيمة للعنصر 3 arr = "hello"; // اقرأ العنصرين 0 و2، واكتب القيمة للعنصر 3 arr] = arr;

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

لا يوجد شيء مميز في تحويل الفهارس الرقمية إلى سلاسل: يمكنك فعل الشيء نفسه مع الكائنات العادية:

فار obj = (); // إنشاء كائن بسيط obj = "one"; // فهرستها بالأعداد الصحيحة

الشيء المتعلق بالمصفوفات هو أنه عند استخدام أسماء الخصائص التي تكون أعدادًا صحيحة غير سالبة، تحدد المصفوفات قيمة الخاصية تلقائيًا طول. على سبيل المثال، قمنا أعلاه بإنشاء مصفوفة تحتوي على عنصر واحد. ثم قامت بتعيين قيم لعناصرها في الفهارس 1 و2 و3. ونتيجة لهذه العمليات، تغيرت قيمة خاصية طول المصفوفة إلى 4.

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

يرجى ملاحظة أنه يمكن استخدام الأرقام السالبة وغير الصحيحة كمؤشرات للصفيف. في هذه الحالة، يتم تحويل الأرقام إلى سلاسل، والتي يتم استخدامها كأسماء خصائص.

إضافة وإزالة عناصر المصفوفة

لقد رأينا بالفعل أن أسهل طريقة لإضافة عناصر إلى المصفوفة هي تعيين قيم لمؤشرات جديدة. يمكنك أيضًا استخدام هذه الطريقة لإضافة عنصر واحد أو أكثر إلى نهاية المصفوفة. يدفع():

فار آر = ; // إنشاء مصفوفة فارغة arr.push("zero"); // أضف قيمة إلى النهاية arr.push("one",2); // أضف قيمتين أخريين

يمكنك أيضًا إضافة عنصر إلى نهاية المصفوفة عن طريق تعيين قيمة للعنصر arr. لإدراج عنصر في بداية المصفوفة، يمكنك استخدام هذه الطريقة إلغاء النقل ()، الذي ينقل العناصر الموجودة في المصفوفة إلى المواضع ذات الفهارس الأعلى.

يمكنك حذف عناصر المصفوفة باستخدام عامل الحذف، تمامًا مثل خصائص الكائن العادية:

فار آر = ; حذف آر؛ 2 في آر؛ // خطأ، لم يتم تعريف الفهرس 2 في المصفوفة arr.length; // 3: عامل الحذف لا يغير خاصية طول المصفوفة

إن إزالة عنصر مشابه (لكنه مختلف قليلاً) لتعيين قيمة غير محددة لهذا العنصر. لاحظ أن تطبيق عامل الحذف على عنصر مصفوفة لا يغير قيمة خاصية الطول أو ينقل العناصر ذات الفهارس الأعلى لأسفل لملء الفراغ المتبقي عن طريق حذف العنصر.

من الممكن أيضًا إزالة العناصر الموجودة في نهاية المصفوفة ببساطة عن طريق تعيين قيمة جديدة لخاصية الطول. المصفوفات لديها طريقة البوب ​​()(عكس طريقة الدفع ())، مما يقلل من طول المصفوفة بمقدار 1 ويعيد قيمة العنصر المحذوف. هناك أيضا طريقة يحول()(عكس unshift())، الذي يزيل العنصر الموجود في بداية المصفوفة. على عكس عامل الحذف، تقوم طريقة Shift() بنقل جميع العناصر إلى موضع أدنى من فهرسها الحالي.

وأخيرا هناك طريقة متعددة الأغراض لصق او جمع()، والذي يسمح لك بإدراج عناصر المصفوفة وحذفها واستبدالها. فهو يغير قيمة خاصية الطول وينقل عناصر المصفوفة إلى فهارس أقل أو أعلى حسب الحاجة. سننظر في كل هذه الطرق بعد قليل.

مصفوفات متعددة الأبعاد

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

على سبيل المثال، لنفترض أن المصفوفة المتغيرة عبارة عن مصفوفة من صفائف الأرقام. كل عنصر من عناصر المصفوفة[x] عبارة عن مصفوفة من الأرقام. للوصول إلى رقم محدد في مصفوفة، يمكنك استخدام مصفوفة التعبير [x] [y]. يوجد أدناه مثال محدد حيث يتم استخدام مصفوفة ثنائية الأبعاد كجدول ضرب:

// إنشاء مصفوفة متعددة الأبعاد var table = new Array(10); // يوجد 10 صفوف في الجدول for(var i = 0; i

طرق فئة المصفوفة

يحدد معيار ECMAScript 3 Array.prototype كمجموعة من الوظائف الملائمة للعمل مع المصفوفات، والتي تتوفر كطرق على أي مصفوفة. سيتم عرض هذه الطرق في الأقسام الفرعية التالية.

طريقة الانضمام ().

يقوم الأسلوب Array.join() بتحويل كافة عناصر المصفوفة إلى سلاسل، وربطها، وإرجاع السلسلة الناتجة. كوسيطة اختيارية، يمكنك تمرير سلسلة إلى الطريقة التي سيتم استخدامها لفصل العناصر في السلسلة الناتجة. إذا لم يتم تحديد سلسلة محددة، يتم استخدام فاصلة. على سبيل المثال، الجزء التالي ينتج عنه السلسلة "1,2,3":

فار آر = ; arr.join(); // "1,2,3" arr.join("-"); // "1-2-3"

طريقة العكس ().

يعكس الأسلوب Array.reverse() ترتيب العناصر في المصفوفة ويعيد مصفوفة مُعاد ترتيبها. يتم إجراء التقليب مباشرة في المصفوفة الأصلية، أي. لا تقوم هذه الطريقة بإنشاء مصفوفة جديدة تحتوي على العناصر المُعاد ترتيبها، بل تعيد ترتيبها في مصفوفة موجودة بالفعل. على سبيل المثال، يؤدي المقتطف التالي، باستخدام الطريقتين العكسي () والانضمام ()، إلى السلسلة "3،2،1":

فار آر = ; arr.reverse().join(); // "3،2،1"

طريقة الفرز ().

يقوم الأسلوب Array.sort() بفرز العناصر الموجودة في المصفوفة المصدر وإرجاع المصفوفة التي تم فرزها. إذا تم استدعاء أسلوب الترتيب () بدون وسيطات، فسيتم الفرز بالترتيب الأبجدي (يتم تحويل العناصر مؤقتًا إلى سلاسل للمقارنة إذا لزم الأمر). يتم نقل العناصر غير المحددة إلى نهاية المصفوفة.

للفرز بترتيب آخر غير الترتيب الأبجدي، يمكنك تمرير دالة مقارنة كوسيطة إلى طريقة الفرز (). تحدد هذه الدالة أيًا من الوسيطتين يجب أن يأتي أولاً في القائمة التي تم فرزها. إذا كانت الوسيطة الأولى يجب أن تأتي قبل الثانية، فيجب أن تقوم دالة المقارنة بإرجاع رقم سالب. إذا كانت الوسيطة الأولى تتبع الثانية في مصفوفة مفروزة، فيجب أن تقوم الدالة بإرجاع رقم أكبر من الصفر. وإذا كانت قيمتان متكافئتان (أي أن ترتيبهما لا يهم)، فيجب أن ترجع دالة المقارنة 0:

فار آر = ; arr.sort(); // الترتيب الأبجدي: 1111، 222، 33، 4 arr.sort(function(a,b) ( // الترتيب الرقمي: 4، 33، 222، 1111 يُرجع a-b؛ // يُرجع 0 // اعتمادًا على ترتيب الفرز a وب))؛ // فرز في الاتجاه المعاكس، من الأكبر إلى الأصغر arr.sort(function(a,b) (return b-a));

لاحظ مدى ملاءمة استخدام دالة غير مسماة في هذا المقتطف. تُستخدم وظيفة المقارنة هنا فقط، لذا ليست هناك حاجة لإعطائها اسمًا.

طريقة كونكات ().

تقوم طريقة Array.concat() بإنشاء وإرجاع مصفوفة جديدة تحتوي على عناصر المصفوفة الأصلية التي تم استدعاء concat() عليها وقيم أي وسيطات تم تمريرها إلى concat(). إذا كانت أي من هذه الوسائط عبارة عن مصفوفة بحد ذاتها، فستتم إضافة عناصرها إلى المصفوفة التي تم إرجاعها. ومع ذلك، تجدر الإشارة إلى أنه لا يوجد تحويل عودي لمصفوفة من المصفوفات إلى مصفوفة أحادية البعد. لا تغير طريقة concat () المصفوفة الأصلية. وفيما يلي بعض الأمثلة:

فار آر = ; arr.concat(4, 5); // إرجاع arr.concat(); // إرجاع arr.concat(,) // إرجاع arr.concat(4, ]) // إرجاع ]

طريقة الشريحة ().

يقوم الأسلوب Array.slice() بإرجاع شريحة أو مصفوفة فرعية من المصفوفة المحددة. تحدد وسيطتا الأسلوب بداية ونهاية الجزء الذي تم إرجاعه. يحتوي المصفوفة التي تم إرجاعها على العنصر الذي تم تحديد رقمه في الوسيطة الأولى، بالإضافة إلى جميع العناصر اللاحقة، حتى (ولكن ليس بما في ذلك) العنصر المحدد رقمه في الوسيطة الثانية.

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

فار آر = ; arr.slice(0,3); // إرجاع arr.slice(3); // إرجاع arr.slice(1,-1); // إرجاع arr.slice(-3,-2); // يعود

طريقة لصق ().

تعتبر طريقة Array.splice() طريقة عامة تقوم بإدراج أو حذف عناصر المصفوفة. على عكس أساليب الشريحة () وconcat ()، فإن طريقة لصق () تعدل المصفوفة الأصلية التي تم استدعاؤها عليها. لاحظ أن طريقتي splice() وslice() لهما أسماء متشابهة جدًا، لكنهما تؤديان عمليات مختلفة تمامًا.

يمكن لطريقة splice() إزالة العناصر من المصفوفة، أو إدراج عناصر جديدة، أو القيام بالأمرين معًا في نفس الوقت. يتم إزاحة عناصر المصفوفة حسب الضرورة لإنشاء تسلسل مستمر بعد الإدراج أو الحذف.

تحدد الوسيطة الأولى للطريقة splice() الموضع في المصفوفة الذي سيتم تنفيذ الإدراج و/أو الحذف منه. تحدد الوسيطة الثانية عدد العناصر التي يجب إزالتها (قصها) من المصفوفة. إذا تم حذف الوسيطة الثانية، تتم إزالة كافة عناصر الصفيف من المحدد إلى نهاية الصفيف. تقوم طريقة splice () بإرجاع مصفوفة من العناصر المحذوفة أو (إذا لم تتم إزالة أي عناصر) مصفوفة فارغة.

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

فار آر = ; arr.splice(4); // إرجاع، arr = arr.splice(1,2); // إرجاع، arr = arr.splice(1,1); // يعود ؛ آر = آر = ; arr.splice(2,0"،a"،"b")؛ // يعود ؛ آر =

طرق الدفع () والبوب ​​().

تتيح لك الطريقتان Push() وpop() العمل مع المصفوفات كما لو كانت مكدسة. تضيف طريقة الدفع () واحدًا أو أكثر من العناصر الجديدة إلى نهاية المصفوفة وتعيد طولها الجديد. تنفذ طريقة pop() العملية العكسية - فهي تزيل العنصر الأخير في المصفوفة، وتقلل من طول المصفوفة، وتعيد القيمة التي أزالتها. لاحظ أن كلتا الطريقتين تقومان بتعديل المصفوفة الأصلية بدلاً من إنشاء نسخة معدلة منها.

طرق unshift() وshift()

تعمل الطريقتان unshift() وshift() تقريبًا بنفس طريقة Push() وpop()، باستثناء أنهما تقومان بإدراج العناصر وإزالتها في بداية المصفوفة وليس في نهايتها. تقوم طريقة unshift() بنقل العناصر الموجودة إلى مؤشرات أكبر لتحرير مساحة، وإضافة العنصر أو العناصر إلى بداية المصفوفة، وإرجاع الطول الجديد للمصفوفة. تقوم طريقة Shift () بإزالة العنصر الأول من المصفوفة وإعادته، مع نقل جميع العناصر اللاحقة إلى موضع واحد لأسفل لتشغل المساحة الفارغة في بداية المصفوفة.

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

سأتحدث عن بعض الخيارات لإنشاء المصفوفات وكيف يتم "سحب" طول المصفوفة في JavaScript، وسأتحدث عن ميزاتها، وأدرج الخصائص والأساليب الرئيسية للعمل معها، وبالطبع سأقدم أمثلة اختبارية. هيا بنا نبدأ!

دعونا نتحدث عن المهمة الرئيسية للمصفوفات

أول شيء عليك أن تفهمه هو أن المصفوفات هي نوع يقوم بتخزين البيانات المنظمة في خلايا ذاكرة محددة، ولكل منها معرف (رقم) خاص بها.

ويتم إنشاؤها باستخدام أقواس مربعة، ولها مجموعة من القدرات والأساليب، ويمكن أن تكون متعددة الأبعاد. ميزتها الرئيسية هي أن جميع العناصر مرقمة، بحيث يمكن الوصول إليها عبر معرف.

ومع ذلك، هناك نوع آخر من المصفوفة. في الواقع، في مقالتي عن الكائنات، قلت أن هذه الأخيرة هي أيضًا مصفوفات. في الواقع، فهي عبارة عن صفائف ترابطية، وهي عبارة عن بنية بيانات مع نظام تخزين معلومات في شكل "قيمة مفتاح =>". غالبًا ما يُطلق على هذه البنية اسم التجزئة، أو القاموس بشكل أقل شيوعًا.

دعونا ننظر إلى كل نوع بمزيد من التفصيل.

عند العمل مع المصفوفات الترابطية، يكون من السهل جدًا إضافة العناصر وإزالتها. نظرًا لأن لغة البرمجة النصية هذه ليست مكتوبة وليس لديها العديد من القواعد الصارمة، فيمكنك إنشاء عناصر الكائن بعدة طرق: قم بإدراجها على الفور، وتهيئتها بعد إنشاء الكائن، وكذلك إنشائها مع تقدم التعليمات البرمجية.

الآن أريد أن أعرض أمثلة على تنفيذ مثل هذه الآليات. في البرنامج الأول قمت بإنشاء كائن مريضثم أدرج عناصره. كما ترون، ل مريضالمعلمةلقد صنعت كائنًا متداخلًا له قيمه الخاصة.

1 2 3 4 5 6 7 8 9 10 فار المريض = كائن جديد ()؛ Patient.firstName ="Inna" Patient.age = 34, Patient.param =( الارتفاع: 169, الوزن: 55, المرض: "لا") تنبيه (patient.firstName) // سيتم عرض تنبيه "Inna" (patient.param) المرض) // سيتم طباعة لا

فار المريض = كائن جديد ()؛ Patient.firstName ="Inna" Patient.age = 34, Patient.param =( الارتفاع: 169, الوزن: 55, المرض: "لا") تنبيه (patient.firstName) // سيتم عرض تنبيه "Inna" (patient.param) المرض) // سيتم طباعة لا

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

اسم المريض = "Lutsenko"

تنبيه (اسم المريض)

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

الاسم الأول للمريض = "كاتيا"

بالنسبة للكائنات، هناك أيضًا عملية لحذف الخصائص غير الضرورية باستخدام أمر الحذف:

حذف اسم المريض

المصفوفات "الحقيقية".

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

لذلك، يمكن إدخال عنصر واحد في الخلية ذات الفهرس "0"، والعنصر التالي - مع الفهرس "4". ستكون خلايا الذاكرة المتوسطة فارغة وستخرج "غير محددة" إذا تم الوصول إليها.

على سبيل المثال، كتبت تطبيقًا صغيرًا تم فيه إنشاء مجموعة من المنتجات.

1 2 3 4 5 vargoods = ["لحم البقر"،"المعكرونة"،"الجبن الصلب"،"التوابل"]؛ تنبيه (السلع)؛ تنبيه (السلع)؛ البضائع = تنبيه "الطماطم" (السلع) ؛

vargoods = ["لحم البقر"،"المعكرونة"،"الجبن الصلب"،"التوابل"]؛ تنبيه (السلع)؛ تنبيه (السلع)؛ البضائع = تنبيه "الطماطم" (السلع) ؛

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

البضائع = "الطماطم"

يضيف عنصرًا جديدًا إلى نهاية المصفوفة.

الطرق التي تسمح لك بالعمل مع بداية ونهاية المصفوفة

هناك 4 أوامر تسمح لك بإضافة وإزالة العناصر من بداية ونهاية الكائنات المنظمة.

أولاً، سأخبرك عن الطرق التي تعمل مع بداية المصفوفة. وتشمل هذه يحولو unshift. يزيل الأمر الأول قيمة واحدة ويضيفها الثاني.

على سبيل المثال، أخذت الكود من البرنامج السابق وقمت بتعديله.

1 2 3 4 5 6 7 8 vargoods = ["لحم البقر"،"المعكرونة"،"الجبن الصلب"،"التوابل"]؛ document.writeln(goods); // لحم البقر، المعكرونة، الجبن الصلب، البهارات document.writeln(goods); // سلع الجبن الصلب.unshift("الطماطم"); goods.unshift("بوزينينا"); document.writeln(goods); // لحم الخنزير، الطماطم، لحم البقر، المعكرونة، الجبن الصلب، سلع التوابل.shift() document.writeln(goods); //طماطم، لحم بقري، معكرونة، جبنة صلبة، بهارات

vargoods = ["لحم البقر"،"المعكرونة"،"الجبن الصلب"،"التوابل"]؛ document.writeln(goods); // لحم البقر، المعكرونة، الجبن الصلب، البهارات document.writeln(goods); // سلع الجبن الصلب.unshift("الطماطم"); goods.unshift("لحم الخنزير المطبوخ"); document.writeln(goods); // لحم الخنزير، الطماطم، لحم البقر، المعكرونة، الجبن الصلب، سلع التوابل.shift() document.writeln(goods); //طماطم، لحم بقري، معكرونة، جبنة صلبة، بهارات

لقد قمت بتدوين النتائج التي تم الحصول عليها في التعليقات على الإجراءات المتخذة.

الآن دعنا ننتقل إلى الأساليب التي تضيف وتزيل العناصر إلى نهاية القائمة. لذا، البوبهو المسؤول عن إزالة القيم، و يدفع- للإضافات.

دعونا نضيف الأوامر المذكورة أعلاه إلى تنفيذ البرنامج السابق.

goods.push("الأعشاب الإيطالية");

document.writeln(goods);

ونتيجة لذلك، سيتم عرض السطر الأخير على الشاشة:

"طماطم، لحم بقري، معكرونة، جبنة صلبة، أعشاب إيطالية."

الآن دعونا نعد العناصر

لمعرفة عدد العناصر المكتوبة في المصفوفة، عليك استخدام خاصية الكائن - طول. لقد استخدمت بالفعل هذا الأمر أعلاه.

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

(السلع المتنوعة = ["لحم البقر"، "المعكرونة"، "الجبن الصلب"، "التوابل"]؛)

هذه الخاصية ستؤدي إلى الرقم 6.

بمعرفة هذا الأمر، يمكنك البدء في تحليل الحلقات. إنها ضرورية للتكرار من خلال عناصر المجموعة. هذه آلية مريحة للغاية يصعب الاستغناء عنها. في الحلقات، يمكنك تحديد الاتجاه ومن أي عنصر وعلى طول أي عنصر، وكذلك الخطوة التي يجب أن تتكرر فيها القيم.

الحلقة الأكثر شيوعًا والأسرع تشغيلًا هي تلك التي تم إنشاؤها باستخدام الكلمة الأساسية.

vargoods = ["لحم البقر"،"المعكرونة"،"الجبن الصلب"،"التوابل"]؛ for (var i =goods.length-1;i >=0;i=i-2) ( document.writeln((i+1)+"."+goods[i]); )

أولئك الذين قرروا أن الإجابة ستحتوي على السطر: "4. التوابل 2. المعكرونة" كانوا على حق. أحسنت!

بعض الملاحظات المفيدة

لقد قدم منشئو لغة js العديد من الأساليب والوظائف التي تعمل على تبسيط العمل مع المصفوفات بشكل كبير. من بينها أدوات لنسخ المجموعات، وتغيير ترتيب العناصر، وفرزها، وتحويل المصفوفة إلى سلاسل والعكس، وغير ذلك الكثير.

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

ما هي المصفوفة في جافا سكريبت؟

مصفوفة هي جمع منظم للقيم. تسمى القيم الموجودة في هذه المجموعة بالعناصر. كل عنصر في المصفوفة له رقمه التسلسلي الخاص به، والذي يسمى الفهرس. يتم ترقيم الفهارس بدءًا من 0.

يوضح الشكل التالي مصفوفة رقمية تتكون من 5 عناصر. تحتوي عناصر هذه المصفوفة على البيانات التالية: 123 (الفهرس 0)، 7 (الفهرس 1)، 50 (الفهرس 2)، -9 (الفهرس 3)، 24 (الفهرس 4).

إنشاء (إعلان) مصفوفة

عادةً ما يتم إنشاء المصفوفات في JavaScript باستخدام مصفوفة حرفية.

المصفوفة الحرفية عبارة عن قوس مربع يحتوي على قائمة من العناصر مفصولة بفاصلة.

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

فار فارغ = ; // مصفوفة فارغة var number = ; // المصفوفة الرقمية var arr = ; // مصفوفة تحتوي على أنواع بيانات مختلفة

لا يجب أن تكون القيم الموجودة في مصفوفة JavaScript من نفس النوع. أولئك. يمكن أن تحتوي مجموعة واحدة على قيم لأنواع بيانات مختلفة.

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

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

// أنشئ مصفوفة مكونة من 3 عناصر var mobileColors = ["Black"، "White"، "Gray"]; // اعرض في وحدة تحكم المتصفح قيم عناصر مصفوفة ألوان الهاتف الذكي مع الفهارس 0 و 2 console.log("قيمة عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 0: " + TelephoneColors); // "قيمة عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 0: أسود" console.log("قيمة عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 2: " + TelephoneColors); // "قيمة عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 0: رمادي" // قم بتغيير قيمة عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 1 إلى "أحمر" SmartColors = "Red"; // ["أسود"، "أحمر"، "رمادي"] // اضبط عنصر مصفوفة ألوان الهاتف الذكي مع الفهرس 3 على القيمة "أزرق" SmartColors = "Blue"; // ["أسود"، "أحمر"، "رمادي"، "أزرق"]

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

فار lengthA = 7، widthA = 5؛ نقطة فار = ;

يمكن استخدام الكائنات كقيم عناصر الصفيف.

نقاط فار = [ (x1: 5, y1: 3), (x1: 7, y1: 10), (x1: 12; y1: 0)]; // مصفوفة مكونة من 3 كائنات

طريقة أخرى لإنشاء مصفوفةيتكون من استدعاء وظيفة منشئ الصفيف.

يتم استخدام استدعاء دالة منشئ بدون وسائط لإنشاء مصفوفة فارغة.

فار فارغ = مصفوفة جديدة ()؛ // مصفوفة فارغة

هذه الطريقة لإنشاء مصفوفة تعادل الطريقة الحرفية.

إذا قمت بتحديد رقم كوسيطة للدالة المُنشئة، فسيتم إنشاء مصفوفة تتكون من العدد المحدد من العناصر. علاوة على ذلك، فإن كل هذه العناصر لن تكون لها قيمة محددة.

var arr = new Array(5); // مصفوفة مكونة من 5 عناصر (قيم العناصر غير محددة)

إذا قمت بتمرير عدة قيم أو قيمة واحدة غير رقمية إلى الدالة المُنشئة بين قوسين، فسيتم إنشاء مصفوفة من الوسائط التي تم تمريرها إليها.

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

خاصية الطول (طول المصفوفة)

يتم تحديد طول المصفوفة (عدد العناصر) باستخدام خاصية الطول.

// أنشئ مصفوفة عن طريق سرد قيم العناصر في وظيفة المصفوفة var VolumeHDDs = new Array("500Gb"،"1Tb"،"2Tb")؛ // قم بتعيين متغير lengthArray لطول مصفوفة VolumeHDDs var lengthArray = VolumeHDDs.length;

كيفية الحصول على العنصر الأول في المصفوفة

يتم الحصول على قيمة العنصر الأول في المصفوفة عن طريق تحديد الرقم 0 بين قوسين مربعين من هذه المصفوفة:

// إنشاء مصفوفة مكونة من 3 عناصر var VolumeHDDs = new Array("500Gb"،"1Tb"،"2Tb"); // الحصول على قيمة العنصر الأول من المصفوفة var firstValue = VolumeHDDs;

كيفية الحصول على العنصر الأخير في المصفوفة

يتم الحصول على قيمة العنصر الأخير في المصفوفة عن طريق تحديد التعبير array_name.length-1 بين قوسين مربعين من هذه المصفوفة:

// إنشاء مصفوفة مكونة من 3 عناصر var VolumeHDDs = new Array("500Gb"،"1Tb"،"2Tb"); // الحصول على قيمة العنصر الأخير في المصفوفة var lastValue = VolumeHDDs;

التكرار على مصفوفة

يتم التكرار عبر عناصر المصفوفة باستخدام حلقة for.

على سبيل المثال، دعونا نراجع جميع عناصر المصفوفة ونعرض قيمها في وحدة تحكم المتصفح (F12):

// إنشاء مصفوفة باسم الطلاب، تتكون من 4 عناصر var nameStudents = new Array("Petya"،"Vasya"،"Kolya"،"Maxim")؛ // تكرار عناصر المصفوفة من 0 إلى طول المصفوفة -1 for (var i=0; i<= nameStudents.length-1; i++) { console.log(i+1 + " элемент массива = " + nameStudents[i]); }

ما هو الغرض من عامل الحذف؟

لا يتم استخدام عامل الحذف لإزالة عنصر من مصفوفة، بل لتعيين قيمة غير محددة لعنصر مصفوفة محدد.

var namePlanets = new Array("Venus"،"Mercury"، "Earth"، "Mars")؛ حذف اسم الكواكب؛ لـ (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

وظائف للعمل مع المصفوفات (طرق كائن المصفوفة)

يحتوي كائن Array على الطرق (الوظائف) التالية للعمل مع المصفوفات:

  • يحول
  • unshift
  • شريحة
  • لصق او جمع
  • ينقسم
  • يعكس

طريقة الدفع (إضافة عنصر إلى نهاية المصفوفة)

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

var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"]؛ namePlanets.push("المشتري"); // 5 console.log(namePlanets); // ["الزهرة"، "عطارد"، "الأرض"، "المريخ"، "المشتري"]

طريقة البوب ​​(إزالة العنصر الأخير من صفيف)

تم تصميم طريقة البوب ​​لإزالة العنصر الأخير من المصفوفة. لا تحتوي هذه الطريقة على معلمات. ونتيجة لذلك، فإنها تُرجع قيمة العنصر الأخير (الذي تمت إزالته) من المصفوفة.

var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"]؛ namePlanets.pop(); // "المريخ" console.log(namePlanets); // ["الزهرة"، "عطارد"، "الأرض"]

طريقة Shift (إزالة العنصر الأول من المصفوفة)

تم تصميم طريقة التحول لإزالة العنصر الأول من المصفوفة، أي. عنصر له فهرس 0. يتم نقل جميع العناصر الأخرى للمصفوفة إلى البداية، أي. يتم تقليل الفهرس لكل منهم بمقدار 1. تقوم هذه الطريقة بإرجاع قيمة العنصر المحذوف نتيجة لذلك.

var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"]؛ namePlanets.shift(); // "الزهرة" console.log(namePlanets); // ["عطارد"، "الأرض"، "المريخ"]

طريقة unshift (إضافة عنصر إلى بداية المصفوفة)

تم تصميم طريقة unshift لإضافة عنصر إلى بداية المصفوفة (قبل العناصر الأخرى). يتم تحديد قيمة هذا العنصر كمعلمة لهذه الطريقة. ونتيجة لذلك، تقوم هذه الطريقة بإرجاع عدد العناصر الموجودة في المصفوفة، مع الأخذ في الاعتبار ما تمت إضافته.

var namePlanets = ["عطارد"، "الأرض"، "المريخ"، "المشتري"]؛ namePlanets.unshift("فينوس"); // 5 console.log(namePlanets); // ["الزهرة"، "عطارد"، "الأرض"، "المريخ"، "المشتري"]

طريقة الشريحة (نسخ قسم من المصفوفة)

تم تصميم طريقة الشريحة لنسخ قسم من المصفوفة. ومع ذلك، فهو لا يغير المصفوفة الأصلية، ولكنه يُرجع نتيجة لذلك مصفوفة جديدة تتكون من العناصر المحددة.

تحتوي طريقة الشريحة على معلمتين:

  • المعلمة 1 (مطلوبة) - مخصصة للإشارة إلى فهرس العنصر الذي سيتم بدء نسخ العناصر منه؛
  • المعلمة 2 (اختياري) - تهدف إلى الإشارة إلى فهرس العنصر الذي يجب النسخ إليه (في هذه الحالة، لا يتم تضمينه في المصفوفة الجديدة). إذا لم تقم بتحديده، فسيتم نسخ العناصر حتى نهاية المصفوفة المحددة.
var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"، "المشتري"]; فار newNamePlanets = namePlanets.slice(2, 4); // ["الأرض"، "المريخ"]

طريقة اللصق (تغيير محتويات المصفوفة)

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

بناء جملة طريقة اللصق هو:

Array.splice(startIndex,deleteCount[, element1[, element2[,...]]]); /* startIndex (مطلوب) - فهرس البداية للعنصر الذي سيتم البدء في تغيير المصفوفة منه. إذا قمت بتحديد رقم أكبر من طول المصفوفة كـ startIndex، فسيتم تعيين فهرس البداية على نهاية المصفوفة. إذا قمت بتحديد رقم سالب كـ startIndex، فسيتم حساب عنصر البداية من النهاية. deleteCount (مطلوب) - رقم يشير إلى عدد العناصر التي يجب حذفها من المصفوفة. إذا لم تكن هناك حاجة إلى حذف العناصر من المصفوفة، فيجب تعيين الحذف على 0. بعد ذلك، يجب عليك تحديد عنصر جديد واحد على الأقل لإضافته إلى المصفوفة. إذا قمت بتحديد رقم كـdeleteCount سيتجاوز عدد العناصر المتبقية في المصفوفة، بدءًا من startIndex، ففي هذه الحالة سيتم حذفها (أي جميع العناصر حتى نهاية المصفوفة، بدءًا من فهرس البداية) element1، element2، .. (اختياري) - العناصر التي يجب إضافتها إلى المصفوفة. */

أمثلة على استخدام طريقة اللصق.

استخدام طريقة اللصق لإزالة بعض العناصر من المصفوفة.

var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"]؛ namePlanets.splice(2, 2); //["Earth"، "Mars"] console.log(namePlanets); // ["الزهرة"، "عطارد"]

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

var namePlanets = ["الزهرة"، "عطارد"، "الأرض"، "المريخ"]؛ namePlanets.splice(1, 1, "Uranus", "Neptune", "Saturn"); // ["عطارد"] console.log(namePlanets); // ["الزهرة"، "أورانوس"، "نبتون"، "زحل"، "الأرض"، "المريخ"]

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

var namePlanets = ["Jupiter"، "Saturn"، "Uranus"]؛ namePlanets.splice(0, 0, "Venus"، "Mercury"، "Earth"، "Mars"); // console.log(namePlanets); // ["الزهرة"، "عطارد"، "الأرض"، "المريخ"، "المشتري"، "زحل"، "أورانوس"]

طريقة الانضمام (تحويل صفيف إلى سلسلة)

تم تصميم طريقة الانضمام لربط جميع عناصر المصفوفة في سلسلة.

بناء جملة طريقة الانضمام:

Array.join(); /* فاصل (اختياري) - فاصل يُستخدم كسلسلة ربط بين كل عنصر من عناصر المصفوفة. إذا لم يتم تحديد هذه المعلمة، فسيتم استخدام "،" كسلسلة توصيل. إذا قمت بتحديد سلسلة فارغة كمعلمة، فلن يتم فصل عناصر المصفوفة في السلسلة التي تم إرجاعها بأي شيء */

Var berry = ["العنب"، "العنب"، "الكشمش"، "ثمر الورد"]؛ var berryStr1 = berry.join(); // "العنب، العنب، الكشمش، الورد" var berryStr2 = berry.join(""); // "GrapesGrapesCurrantRosehip" var berryStr3 = berry.join(", "); // "العنب، العنب، الكشمش، ثمر الورد" var berryStr4 = berry.join(" + "); // "عنب + عنب + زبيب + وردة المسك"

إذا كنت تستخدم سلسلة غير كفاصل، فسيتم تحويلها إلى سلسلة.

Var berry = ["العنب"، "العنب"، "الكشمش"، "ثمر الورد"]؛ var berryStr1 = berry.join(false); // "GrapesfalseGrapesfalseCurrantfalseRosehip" var berryStr2 = berry.join(4/2); // "Grapes2Grapes2Currant2Rose Hip" سيتم إرسال عناصر المصفوفة التي تحتوي على قيمة فارغة أو غير محددة إلى السلسلة الفارغة. فار آر = ; var arrStr = arr.join("، "); // "0، 5، -4"

تحويل سلسلة إلى مصفوفة - تقسيم

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

var strElementComputers = "وحدة النظام، الشاشة، لوحة المفاتيح، الماوس، مكبرات الصوت، الطابعة"; var elementComputers = strElementComputers.split(", "); console.log("عدد العناصر في المصفوفة:" + elementComputers.length); لـ (var i=0; i<= elementComputers.length-1; i++) { console.log(i + " элемент массива = " + elementComputers[i]); }

إعادة ترتيب عناصر المصفوفة بترتيب عكسي - عكسي

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

var namePlanets = new Array("Venus"،"Mercury"، "Earth"، "Mars")؛ namePlanets.reverse(); console.log("عدد العناصر في المصفوفة:" + namePlanets.length); لـ (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

فرز عناصر المصفوفة - فرز

يتم استخدام طريقة الفرز لفرز عناصر المصفوفة. بشكل افتراضي، تقوم هذه الطريقة بفرز المصفوفة كسلاسل.

var namePlanets = new Array("Venus"،"Mercury"، "Earth"، "Mars")؛ namePlanets.sort(); console.log("عدد العناصر في المصفوفة:" + namePlanets.length); لـ (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

21/06/2017 الساعة 12:17

لحساب حجم مصفوفة من الكائنات في JavaScript، استخدم خاصية الطول للمصفوفة.

var arr = ["الأول"، "الثاني"]؛ console.log(arr.length); // 2

يمكن أن تحتوي المصفوفات في جافا سكريبت على فهارس مفقودة. على سبيل المثال

فار آر = ; آر = "أولا"; آر = "الثانية";

تقوم الخاصية length بإرجاع الحد الأقصى لفهرس المصفوفة + 1. في المثال المعطى، الطول = 5.

حساب عدد العناصر في مصفوفة في جافا سكريبت

Array.prototype.count = function())( var result = 0; for(var i = 0; i< this.length; i++) if (this[i] != undefined) result++; return result; }

مثال الاستخدام

فار آر = ; آر = "أولا"; آر = "الثانية"; console.log(arr.count()); //2

يمكنك أيضًا تعيين قيمة لخاصية الطول. يتيح لك هذا تقليل طول المصفوفة الموجودة.

var arr = ["الأول"، "الثاني"، "الثالث"]؛ طول = 2; console.log(arr); // ["الثانية الأولى"]

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

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

حجم الدالة (obj) ( var bytes = 0; if(obj !== null && obj !== غير محدد) ( Switch(typeof obj) ( case "number": bytes += 8;break; case "string": bytes += obj.length * 2; case "boolean": bytes += 4;

الطريقة ليست دقيقة ولها العديد من المشاكل - على سبيل المثال، هناك احتمال الدخول في حلقة لا نهاية لها.

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

var Fruits = ["Apple"، "Orange"، "Donkey"]

لاستخراج عنصر ما، ضع فهرسه بين قوسين مربعين. الفهرس الأول 0 :

var Fruits = ["Apple"، "Orange"، "Donkey"] تنبيه(فواكه) تنبيه(فواكه) تنبيه(فواكه)

يمكننا أيضًا الحصول على طول مصفوفة JavaScript:

var Fruits = ["Apple"، "Orange"، "Donkey"] تنبيه(fruits.length)

أُووبس! لقد أنشأنا مصفوفة بها ثمرتان وحمار. الآن نحن بحاجة لإزالة الحمار.

طرق البوب ​​والدفع

يقوم الأسلوب pop في JavaScript بإزالة عنصر من المصفوفة وإعادته.

يوضح المثال التالي كيفية استرداد "Donkey" من مصفوفة:

var Fruits = ["Apple"، "Orange"، "Donkey"] تنبيه("أقوم بإزالة "+fruits.pop()) // الآن لدينا فقط ["Apple"،"Orange"] تنبيه("Now" حجم المصفوفة: "+fruits.length) // تمت إزالة الحمار

لاحظ أن pop يعدل المصفوفة نفسها.

نظير Pop هو أسلوب الدفع، الذي يضيف عنصرًا إلى المصفوفة. على سبيل المثال، نسينا إضافة خوخة:

var Fruits = ["Apple"، "Orange"] Fruits.push("Peach"); // الآن لدينا ["Apple"، "Orange"، "Peach"] تنبيه("العنصر الأخير:"+fruits)

  1. إنشاء مجموعة من الأنماط مع العناصر " موسيقى الجاز”, “البلوز”;
  2. أضف القيمة " موسيقى الروك آند رول«;
  3. استبدل القيمة الثانية من النهاية بالقيمة " كلاسيكي". يجب أن ينتهي بك الأمر بمصفوفة: " موسيقى الجاز”, ”كلاسيكي”, ”موسيقى الروك آند رول" يجب أن يعمل الكود لأي طول صفيف؛
  4. استرجاع القيمة الأخيرة من المصفوفة وعرضها عبر التنبيه .

حل

// 1 var style = ["Jazz"، "Bluez"] // 2 style.push("Rock"n"Roll") // أو:styles = "Rock"n"Roll" // 3styles = "Classic " // 4 تنبيه (styles.pop())

أساليب التحول/إلغاء التحول

تعمل أساليب Shift/unshift في نهاية المصفوفة، ولكن يمكنك أيضًا استخدام Shift لإزاحة العناصر لأعلى ( تتم إزالة القيمة الأولى للمصفوفة عن طريق إزاحة العناصر). يسمح التابع unshift لجافا سكريبت بإضافة عنصر إلى مصفوفة من النهاية:

var Fruits = ["Apple"، "Orange"] var apple = Fruits.shift() // الآن لدينا فقط ["Orange"] Fruits.unshift("Lemon") // الآن لدينا ["Lemon"، " برتقالي"] تنبيه (الثمار. الطول) // 2

يمكن أن يعمل كل من Shift وunshift على عناصر متعددة في وقت واحد:

var Fruits = ["Apple"]fruits.push("Orange"،"Peach")fruits.unshift("Pineapple"،"Lemon") // الآن يبدو المصفوفة كما يلي: ["Pineapple"، "Lemon"، "التفاحة"، "البرتقالية"، "الخوخ"]

مهمة الإدارة الذاتية

اكتب الكود لعرض قيمة عشوائية من المصفوفة arr عبر التنبيه:

var arr = ["برقوق"،"برتقالي"، "حمار"، "جزر"، "JavaScript"]

ملاحظة: رمز الحصول على رقم عشوائي من القيمة الدنيا إلى القيمة القصوى (ضمناً) هو كما يلي:

فار راند = دقيقة + Math.floor(Math.random()*(max+1-min))

حل

نحتاج إلى استخراج رقم عشوائي من 0 إلى arr.length-1 (ضمنًا):

var arr = ["برقوق"،"برتقالي"، "حمار"، "جزر"، "JavaScript"] var rand = Math.floor(Math.random()*arr.length) تنبيه(arr)

التكرار على مصفوفة

في JavaScript، يتم التكرار عبر المصفوفة باستخدام حلقة for:

var Fruits = ["Pineapple"، "Lemon"، "Apple"، "Orange"، "Peach"] for(var i=0; i

مهمة الإدارة الذاتية

قم بإنشاء دالة find(arr,value) التي تبحث عن قيمة في مصفوفة معينة وتقوم بإرجاع فهرسها أو -1 إذا لم يتم العثور على القيمة.

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

arr = [ "test"، 2, 1.5, false ] find(arr, "test") // 0 find(arr, 2) // 1 find(arr, 1.5) // 2 find(arr, 0) // -1

حل

قد يبدو الحل المحتمل كما يلي:

دالة البحث (مصفوفة، قيمة) ( for(var i=0; i

لكن هذا غير صحيح لأن == لا يحدد الفرق بين 0 و false .

من الأصح استخدام === عند العمل مع المصفوفات في JavaScript. بالإضافة إلى ذلك، يتضمن أحدث معيار ES5 وظيفة Array#indexOf. ومن خلاله يمكننا تعريف دالة كالتالي:

العثور على دالة (مصفوفة، قيمة) (إذا (array.indexOf) تُرجع array.indexOf(value) for(var i=0; i

والأكثر ذكاءً هو تحديد البحث بشرط للتحقق من وجود طريقة IndexOf.

مهمة الإدارة الذاتية

قم بإنشاء دالة filterNumeric(arr) تأخذ مصفوفة وترجع مصفوفة جديدة تحتوي فقط على القيم الرقمية من arr.

مثال على كيفية عمل ذلك:

آر = ["أ"، 1، "ب"، 2]؛ arr = filterNumeric(arr); // الآن آر =

حل

الحل هو التكرار عبر المصفوفة وإضافة القيم إلى مصفوفة جديدة إذا كانت رقمية.

الانضمام والانقسام

في بعض الأحيان تحتاج إلى طريقة سريعة لتحويل مصفوفة JavaScript إلى سلسلة. هذا هو الغرض من طريقة الانضمام.

يقوم بتسلسل مصفوفة في سلسلة باستخدام المحدد المحدد:

var Fruits = ["ليمون"،"Apple"، "برتقالي"، "خوخ"]؛ var str = Fruits.join("، "); تنبيه (شارع)؛

يتم التحويل العكسي بسهولة باستخدام طريقة التقسيم:

var Fruits = "Apple,Orange,Peach"; var arr = Fruits.split("،); // arr يحتوي الآن على ["Apple"، "Orange"، "Peach"] تنبيه(arr);

مهمة الإدارة الذاتية

يتضمن الكائن خاصية className، التي تحتوي على أسماء الفئات، مفصولة بمسافات:

اكتب دالة addClass(obj, cls) تضيف الفئة cls، ولكن فقط في حالة عدم وجودها:

ddClass(obj, "new") // obj.className="open القائمة الجديدة" addClass(obj, "open") // لا توجد تغييرات (الفئة موجودة بالفعل) addClass(obj, "me") // obj.className= تنبيه "فتح القائمة الجديدة" (obj.className) //

حل

تحتاج إلى تقسيم className والحلقة إلى أجزاء. إذا لم يتم العثور على الفئة، فسيتم إضافتها.

تم تحسين الحلقة قليلاً لزيادة الأداء:

وظيفة addClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) return ) elem.className += " "+cls ) var obj = ( className: "open القائمة" ) addClass(obj, "new") addClass(obj, "open") تنبيه(obj.className) // فتح القائمة جديد

في المثال أعلاه، تم تعريف المتغير c في بداية الحلقة وتم تعيين فهرسه الأخير على i .

تتم معالجة الحلقة نفسها في الاتجاه المعاكس، وتنتهي بالشرط i>=0. لأن i>=0 أسرع في التحقق من i . ما في JavaScript يسرع عملية البحث في المصفوفة.

استخدام الطول لقص المصفوفة

باستخدام الخاصية length، يمكنك اقتطاع مصفوفة مثل هذا:

يمكنك تحديد الطول ويقوم المتصفح باقتطاع المصفوفة.

المصفوفة كائن، فماذا يعني هذا؟

في الواقع، في JavaScript، المصفوفة عبارة عن كائن، مكتمل بإعدادات تلقائية للطول وطرق خاصة.

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

مفاتيح المصفوفة غير الرقمية

المفاتيح هي أرقام، ولكن يمكن أن يكون لها أي اسم:

arr = arr = 5 arr.prop = 10 // لا تفعل هذا

في جافا سكريبت، المصفوفات عبارة عن جداول تجزئة، والتي لها مزايا في الأداء ولكن أيضًا لها عيوب معينة.

على سبيل المثال، يعمل الضغط/البوب ​​فقط على العناصر الخارجية للمصفوفة، لذا فهي سريعة بشكل لا يصدق.

الدفع يعمل فقط مع النهاية:

var arr = ["My"، "array"] arr.push("something") تنبيه(arr) // سلسلة "صفيف"

تعتبر أساليب النقل/إلغاء النقل بطيئة لأنها تحتاج إلى إعادة ترقيم المصفوفة بأكملها. يمكن أن تتسبب طريقة اللصق أيضًا في تغيير الترقيم:


لذا فإن Shift/unshift أبطأ من Push/Pop . كلما كان المصفوفة أكبر، كلما استغرق جافا سكريبت وقتًا أطول لفرز المصفوفة.

مهمة الإدارة الذاتية

ماذا ستكون النتيجة؟ لماذا؟

arr = ["a"، "b"] arr.push(function() ( تنبيه(هذا) )) arr() // ?

حل

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

arr() // مثل arr() // غير صحيح من الناحية النحوية، ولكنه نفسه من الناحية النظرية: arr.2() // أعيد كتابته بنفس أسلوب obj.method() this = arr في هذه الحالة يتم تمريره إلى الدالة، لذلك تتم طباعة محتويات arr. arr = ["a"، "b"] arr.push(function() ( تنبيه(هذا) )) arr() // "a"، "b"، وظيفة

صفائف متفرقة، وصف الطول

تسمح لك خاصية الطول بالحصول على ليس حجم المصفوفة في جافا سكريبت، ولكن الفهرس الأخير + 1. وهذا مهم عندما نتحدث عن المصفوفات المتفرقة، مع وجود "فجوات" في المؤشرات.

في المثال التالي، سنضيف عنصرين إلى الثمار الفارغة، لكن قيمة الطول ستبقى 100:

var Fruits = // مصفوفة فارغة Fruits = "Peach" Fruits = "Apple" تنبيه (fruits.length) // 100 (ولكن هناك عنصرين فقط في المصفوفة)

إذا حاولت إخراج مصفوفة متفرقة، فسيقوم المتصفح بإرجاع قيم الفهرس المفقودة كعناصر فارغة:

var Fruits = // مصفوفة فارغة Fruits = "Peach" Fruits = "Apple" تنبيه(fruits) // ,Peach,Apple (أو شيء من هذا القبيل)

لكن المصفوفة هي كائن ذو مفتاحين. القيم المفقودة لا تشغل مساحة.

تتصرف المصفوفات المتفرقة بشكل غريب عند تطبيق أساليب المصفوفة عليها. ليس لديهم أي فكرة عن أن الفهارس مفقودة:

var Fruits = Fruits = "Peach" Fruits = "Apple" تنبيه (fruits.pop()) // انبثاق "Apple" (للفهرس 9) تنبيه (fruits.pop()) // انبثاق عنصر غير محدد (للفهرس 8) )

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

الإزالة من مصفوفة

كما نعلم، المصفوفات هي كائنات، لذا يمكننا استخدام الحذف لإزالة قيمة:

var arr = ["Go"، "to"، "home"] حذف arr // الآن arr = ["Go"، غير محدد، "home"] تنبيه(arr) // غير محدد

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

يقوم عامل الحذف بإزالة زوج القيمة الرئيسية وهذا كل شيء. بطبيعة الحال، نظرًا لأن المصفوفة عبارة عن تجزئة فقط، يصبح موضع العنصر الذي تمت إزالته غير محدد.

نحتاج في أغلب الأحيان إلى إزالة عنصر ما دون ترك "ثقوب" بين الفهارس. هناك طريقة أخرى ستساعدنا في هذا.

طريقة لصق

يمكن لطريقة اللصق إزالة العناصر واستبدالها في مصفوفات JavaScript متعددة الأبعاد. بناء الجملة الخاص به هو:

arr.splice(index,deleteCount[,elem1,...,elemN])

يزيل عنصر الحذف بدءًا من الفهرس ثم يُدرج elem1، ...، elemN في مكانه.

دعونا نلقي نظرة على بعض الأمثلة:

var arr = ["Go"، "to"، "home"] arr.splice(1, 1) // إزالة عنصر واحد بدءًا من الفهرس 1 تنبيه(arr.join("،")// ["Go " ، "home"] (تمت إزالة عنصر واحد)

لذلك يمكنك استخدام لصق لإزالة عنصر واحد من صفيف. يتم إزاحة أرقام عناصر المصفوفة لملء المساحة:

var arr = ["Go"، "to"، "home"] arr.splice(0, 1) // إزالة عنصر واحد، بدءًا من الفهرس 0 تنبيه(arr) // أصبح "to" هو العنصر الأول

يوضح المثال التالي كيفية استبدال العناصر:

يُرجع التابع splice مصفوفة من العناصر المحذوفة:

var arr = ["Go"، "to"، "home"، "now"]; // إزالة العنصرين الأولين var Remove = arr.splice(0, 2) تنبيه(removed) // "Go"، "to"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

يمكن لهذه الطريقة أيضًا استخدام فهرس سالب، والذي يتم حسابه من نهاية المصفوفة:

var arr = // للعنصر -1 (قبل الأخير) // إزالة 0 عنصر، // وإدراج 3 و4 arr.splice(-1, 0, 3, 4) تنبيه(arr) // 1,2,3, 4.5

مهمة الإدارة الذاتية

يحتوي الكائن على خاصية className، التي تحتوي على أسماء الفئات، مفصولة بمسافات:

فار obj = (اسم الفئة: "القائمة المفتوحة")

اكتب دالة RemoveClass(obj, cls) تزيل الفئة cls إذا تم إعطاؤها:

RemoveClass(obj, "open") // obj.className="menu" RemoveClass(obj, "blabla") // لا توجد تغييرات (لا يوجد فئة لإزالتها)

حل

تحتاج إلى تقسيم className إلى أجزاء والتكرار خلال هذه الأجزاء. إذا تم العثور على تطابق، تتم إزالته من مجموعة كائنات JavaScript ثم تتم إضافته مرة أخرى إلى النهاية.

دعونا نحسن هذا قليلاً:

وظيفة RemoveClass(elem, cls) ( for(var c = elem.className.split(" "), i=c.length-1; i>=0; i--) ( if (c[i] == cls ) c.splice(i,1)) ) elem.className = c.join(" ") ) var obj = ( className: "open القائمة" ) RemoveClass(obj, "open") RemoveClass(obj, "blabla") تنبيه (obj.className) // القائمة

في المثال أعلاه، تم تعيين المتغير c في بداية الحلقة وتم تعيين i على فهرسه الأخير.

الحلقة نفسها تعمل في الاتجاه المعاكس، وتنتهي بالشرط i>=0. يتم ذلك لأنه يتم تحديد i>=0 بشكل أسرع من i . مما يسرع عملية البحث عن العقارات في c .

طريقة شريحة

يمكنك استخراج جزء من مصفوفة باستخدام طريقة الشريحة (begin[, end]): var arr = ["لماذا"، "learn"، "JavaScript"]; var arr2 = arr.slice(0,2) // يأخذ عنصرين، بدءًا من 0 تنبيه(arr2.join("، ")) // "لماذا، تعلم"

يرجى ملاحظة أن هذه الطريقة لا تغير عدد العناصر في المصفوفة في JavaScript، ولكنها تنسخ جزءًا منها.

يمكنك حذف الوسيطة الثانية للحصول على جميع العناصر بدءًا من فهرس محدد:

var arr = ["لماذا"، "تعلم"، "JavaScript"]؛ var arr2 = arr.slice(1) // يأخذ جميع العناصر بدءًا من 1 تنبيه(arr2.join("، ")) // "تعلم، جافا سكريبت"

تدعم هذه الطريقة الفهارس السالبة، تمامًا مثل String#slice .

طريقة عكسية

طريقة أخرى مفيدة هي العكس . لنفترض أنني أريد الحصول على الجزء الأخير من النطاق مثل " com" من " my.site.com" هيريس كيفية القيام بذلك:

var domain = "my.site.com" var last = domain.split(".").reverse() تنبيه(الأخير)

لاحظ أن صفائف JavaScript تدعم بناء جملة معقد (reverse()) لاستدعاء طريقة ثم استرداد عنصر من المصفوفة الناتجة.

يمكنك إنشاء مكالمات أطول مثل عكس () 0] arr.sort() تنبيه(arr) // 1, 15, 2

قم بتشغيل الكود أعلاه. سوف تحصل على الطلب 1، 15، 2. وذلك لأن الطريقة تحول كل شيء إلى سلسلة وتستخدم ترتيبًا معجميًا افتراضيًا.