المصفوفات في JavaScript. المصفوفات متعددة الأبعاد في جافا سكريبت وعدة طرق لفرزها المصفوفات متعددة الأبعاد في أمثلة جافا سكريبت

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

إنها مصفوفة تحتوي على عنصر واحد أو أكثر ، وهي أيضًا مصفوفات. اعتمادًا على عمق الإعلان ، على وجه الخصوص ، قد يتم استدعاؤه مجموعة ثنائية الأبعاد(2 مستويات) إما مجموعة ثلاثية الأبعاد(3 مستويات) إما رباعي الأبعاد(4 مستويات) وهلم جرا.

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


كما ترى ، فإن عناصر المصفوفة ثنائية الأبعاد عبارة عن مصفوفات أحادية البعد. إذا كانت هذه المصفوفات أحادية البعد تحتوي على المزيد من المصفوفات ، فإن مصفوفة arr ستكون بالفعل ثلاثية الأبعاد.

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

// قم بتعريف ثلاث مصفوفات فارغة var evenNumbers = new Array () ؛ // Variable k - لمؤشرات المصفوفة حتىأرقام var k = 0 ؛ var oddNumbers = new Array () ، // Variable n - لمؤشرات المصفوفة oddNumbers var n = 0 ؛ var data = new Array ("car"، "plane"، true، 89، "m")؛ // املأ المصفوفة أرقام زوجية ، بأرقام زوجية لـ (var i = 1 ؛ i

لمعرفة ما يوجد داخل المصفوفة ، يمكنك استخدام أداة مثل وحدة التحكم.

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

Console.log (الأرقام الفردية) ؛

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


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


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

// قم بتعريف مصفوفة ثنائية الأبعاد ثنائية الأبعاد ، واملأها var twoDimens = صفيف جديد (أعداد زوجية ، أرقام فردية ، بيانات) ؛ console.log (twoDimens) ؛

دعونا نرى محتويات هذه المجموعة في وحدة التحكم.


التكرار على مصفوفة ثنائية الأبعاد

أولاً ، دعنا نتعلم كيفية الوصول إلى عناصر مصفوفة ثنائية الأبعاد.

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

كمثال ، دعنا نعرض العنصر في الفهرس 3 من مصفوفة بأرقام فردية (أرقام فردية). فهرس المصفوفة أحادية الأبعاد oddNumbers في المصفوفة ثنائية الأبعاد twoDimens هو واحد (1).

Document.write ("العنصر ذو الفهرس 3 من مصفوفة الأرقام الفردية ، وهو:" + twoDimens) ؛ // العنصر: 7

في المصفوفة twoDimens ، نشير إلى العنصر في الفهرس 1. العنصر في هذا الفهرس هو مصفوفة الأرقام الفردية. وفي هذه المصفوفة ، نصل بالفعل إلى العنصر ذي الفهرس 3 ، وهو الرقم 7.

الآن دعنا ننتقل إلى السؤال نفسه كيفية عمل حلقة على مصفوفة ثنائية الأبعاد.

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

لـ (var i = 0 ؛ i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

عنصر مع فهرس "+ i +" "+ j +"يساوي: "+ twoDimens [i] [j] +"

"); } }

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

بعد التكرار على العناصر من المصفوفة الأولى ، نعود إلى الحلقة الأولى ، ونزيد المتغير i ، وننتقل إلى التكرار على المصفوفة الثانية ، التي تحتوي على فهرس 1. وهكذا ، فإننا نكرر كل عنصر من العناصر ثنائية الأبعاد مجموعة twoDimens.

الآن دعونا نلقي نظرة على نتيجة هذا البحث:


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

في هذه المقالة ، سوف نلقي نظرة على مصفوفات JavaScript القياسية المفهرسة عدديًا. يتم التصريح عن المصفوفات باستخدام أقواس مربعة:

var ثمار = ["Apple"، "Orange"، "Donkey"]

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

تنبيه var ثمار = ["تفاح" ، "برتقالي" ، "حمار"] تنبيه (فواكه) تنبيه (فواكه) تنبيه (فواكه)

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

var ثمار = تنبيه ["Apple"، "Orange"، "Donkey"] (fruit.length)

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

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

تزيل طريقة pop في JavaScript عنصرًا من مصفوفة وتعيده.

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

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

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

التناظرية لـ pop هي طريقة الدفع ، والتي تضيف عنصرًا إلى مصفوفة. على سبيل المثال ، نسينا إضافة خوخ:

var ثمار = ["Apple"، "Orange"] fruit.push ("Peach")؛ // الآن لدينا تنبيه ["تفاح" ، "برتقالي" ، "خوخ"] ("العنصر الأخير:" + فواكه)

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

حل

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

طرق التحول / unshift

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

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

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

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

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

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

var arr = ["Plum"، "Orange"، "Donkey"، "Carrot"، "JavaScript"]

ملاحظة: الكود الخاص بالحصول على رقم عشوائي من الحد الأدنى إلى الحد الأقصى للقيمة (شامل) هو كما يلي:

var rand = min + Math.floor (Math.random () * (max + 1-min))

حل

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

var arr = ["Plum"، "Orange"، "Donkey"، "Carrot"، "JavaScript"] var rand = Math.floor (Math.random () * arr.length) التنبيه (arr)

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

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

var ثمار = ["Pineapple"، "Lemon"، "Apple"، "Orange"، "Peach"] لـ (var i = 0؛ i

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

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

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

arr = ["test"، 2، 1.5، false] find (arr، "test") // 0 اعثر (arr، 2) // 1 find (arr، 1.5) // 2 find (arr، 0) // -1

حل

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

البحث عن وظيفة (صفيف ، قيمة) (لـ (var i = 0 ؛ i

لكن هذا ليس صحيحًا ، لأن == لا تفرق بين 0 و false.

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

وظيفة البحث (مصفوفة ، قيمة) (إذا كانت (array.indexOf) تُرجع array.indexOf (قيمة) لـ (var i = 0 ؛ i

سيكون من الأفضل تحديد البحث من خلال شرط للتحقق من وجود طريقة indexOf.

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

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

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

arr = ["a"، 1، "b"، 2] ؛ arr = filterNumeric (arr) ؛ // الآن arr =

حل

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

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

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

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

var ثمار = ["Lemon"، "Apple"، "Orange"، "Peach"]؛ var str = fruit.join ("،") ؛ تنبيه (شارع) ؛

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

فار فواكه = "تفاح ، برتقال ، خوخ" ؛ var arr = fruit.split ("،") ؛ // arr الآن يحتوي على تنبيه ["Apple" ، "Orange" ، "Peach"] (arr) ؛

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

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

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

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

حل

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

تم تحسين الحلقة بشكل طفيف لزيادة الأداء:

الوظيفة addClass (elem، cls) (لـ (var c = elem.className.split ("")، i = c.length-1؛ i> = 0؛ i--) (if (c [i] == cls ) return) elem.className + = "" + cls) var obj = (className: "open menu") addClass (obj، "new") addClass (obj، "open") alert (obj.className) // open menu الجديد

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

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

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

باستخدام خاصية length ، يمكنك قص مصفوفة كالتالي:

إذا أعطيت الطول ، فسيقوم المستعرض باقتطاع المصفوفة.

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

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

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

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

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

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

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

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

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

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

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

وبالتالي ، يكون التغيير / عدم التغيير أبطأ من الدفع / الفرقعة. كلما كانت المصفوفة أكبر ، كلما استغرق الأمر وقتًا أطول لفرز المصفوفة من JavaScript.

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

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

arr = ["a"، "b"] arr.push (الوظيفة () (alert (this))) arr () //؟

حل

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

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

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

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

في المثال التالي ، سنضيف عنصرين لإفراغ الفاكهة ، لكن يظل الطول عند 100:

فار ثمار = // مجموعة فواكه فارغة = "خوخ" فواكه = تنبيه "تفاحة" (طول الفاكهة) // 100 (ولكن لا يوجد سوى عنصرين في المصفوفة)

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

var ثمار = // مجموعة فواكه فارغة = "خوخ" فواكه = تنبيه "تفاحة" (فواكه) // أو خوخ أو تفاح (أو شيء من هذا القبيل)

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

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

var ثمار = ثمار = "Peach" ثمار = تنبيه "Apple" (ثمار.pop ()) // دفع "Apple" (في الفهرس 9) تنبيه (ثمار.pop ()) // دفع بدون تعيين (في الفهرس 8 ))

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

إزالة من مجموعة

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

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

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

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

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

طريقة لصق

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

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

يحذف عنصر deleteCount بدءًا من الفهرس ثم يُدرج 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" العنصر الأول

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

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

var arr = ["Go"، "to"، "home"، "now"] ؛ // إزالة أول عنصرين var تمت إزالته = arr.splice (0، 2) تنبيه (تمت الإزالة) // "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 التي تحتوي على أسماء الفئات ، مفصولة بمسافات:

var obj = (className: "فتح القائمة")

اكتب دالة removeClass (obj، cls) تزيل فئة cls إذا أعطيت:

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

حل

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

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

دالة removeClass (elem، cls) (لـ (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 menu") removeClass (obj، "open") removeClass (obj، "blabla") تنبيه (obj.className) // القائمة

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

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

طريقة شريحة

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

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

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

var arr = ["Why"، "Learn"، "JavaScript"]؛ var arr2 = arr.slice (1) // يقبل كل العناصر التي تبدأ بتنبيه واحد (arr2.join ("،")) // "Learn، JavaScript"

تدعم الطريقة المؤشرات السالبة ، تمامًا مثل شريحة String #.

الطريقة العكسية

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

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

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

يمكنك إجراء مكالمات أطول مثل عكس () 0] arr.sort () alert (arr) // 1، 15، 2

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

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

Var mas = new Array (value1، value2، ...، valueN) ؛

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

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

إخراج جميع عناصر المصفوفة:

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

في حالتنا ، تتوافق المصفوفة ثنائية الأبعاد (على سبيل المثال) مع البنية التالية: mas = [،،]. يمكنك أن ترى أن المصفوفة بها 3 عناصر ، كل منها عبارة عن مصفوفة بحد ذاتها.

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

في JavaScript ، المصفوفات متعددة الأبعاد عبارة عن مصفوفات من المصفوفات. للوصول إلى عنصر ، على سبيل المثال ، مصفوفة ثنائية الأبعاد ، يجب عليك تحديد عامل مرتين.

افترض أن المصفوفة المتغيرة عبارة عن مصفوفة من مصفوفات أعداد صحيحة. كل عنصر من عناصر المصفوفة [j] عبارة عن مجموعة من الأرقام. للإشارة إلى رقم منفصل ، نستخدم الترميز: matrix [j] [k].

مثال. لنستخدم مصفوفة ثنائية الأبعاد لإنشاء جدول الضرب.

var matrix = new Array (10) ؛ // هناك 10 أسطر في المصفوفة

لـ (var j = 0 ؛ j< matrix.length; j++)

matrix [j] = new Array (10) ؛ // د أنشأ كل سطر 10 أعمدة

لـ (var row = 0؛ row< matrix.length; row++) {

لـ (عمود = 0 ؛ عمود< matrix .length; col++) {

مصفوفة = صف * عمود ؛ // ملء عناصر المصفوفة

var rezult = مصفوفة ؛ // نتيجة الضرب 24

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

mеnu = nеw Аrrаy () ،

mеnu = nеw Аrrаy ("الخيار 1.1" ، "الخيار 1.2" ، "،" الخيار 1.3 ") ؛

mеnu = nеw Аrrаy ("الخيار 2.1" ، "الخيار 2. 2") ؛

mеnu = nеw Аrrаy ("الخيار 3.1" ، "الخيار 3.2" ، "الخيار 3.3" ، "الخيار 3.4") ؛

للوصول إلى الخيار الأول من القائمة الفرعية الثانية ، عليك كتابة:

القائمة // القيمة هي "الخيار 2.1" ؛

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

mеnu = جديد Аrrау ()

القائمة = جديد Arrau ("Menu1" ، "Menu2" ، "Menu3") ؛

القائمة = جديد Аrrау () ؛

القائمة = صفيف جديد ("الخيار 1.1". "الخيار 1.2" ، "الخيار 1.3") ؛

menu = new Arrau ("الخيار 2.1" ، "الخيار 2. 2") ؛

menu = صفيف جديد ("الخيار 3.1" ، "الخيار 3. 2" ، "الخيار H.3" ، "الخيار 3.4") ؛

القائمة // القيمة هي "Menu2"

القائمة // القيمة هي "Menu3"

القائمة // القيمة هي "الخيار 2.1"

القائمة // القيمة هي "الخيار 3.2"

طرق المصفوفة

في هذا القسم ، سننظر في الطرق التي يمكنك من خلالها معالجة عناصر المصفوفة.

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

var arr = ؛ // بمجموعة من ثلاثة عناصر

var str = arr.join () ؛ // قيمة str هي "12،23،38"

str = arr.join ("؛") ؛ // str == "12 ؛ 23 ؛ 38"

كما ذكرنا سابقًا ، طريقة Array.join () هي عكس طريقة String.split () ، التي تقسم السلاسل إلى عناصر مصفوفة.

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

var arr = nеw Аrrау (1،2،3) ؛ // arr = 1، arr = 2، arr = 3

arr.reverse () ، // arr = 3 ، arr = 2 ، arr = 1

var str = arr.jоin () ؛ // str == "3،2،1"

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

var arr = nеw Аrrаy ("banaana" ، "сherrry" ، "aple") ؛

var str = arr.join ("،") ؛ // str == "تفاح ، موز ، شيري"

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

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

دعونا نفرز بالترتيب العددي.

var arr = ؛

arr.sort () ، // بالترتيب الأبجدي: 11111 ، 2222 ، 333 ، 44

arr.sort (الوظيفة (الأولى ، الثانية) (//

العودة أولا - الثانية ؛ )) ؛ // ترتيب رقمي: 44 ، 333 ، 2222 ، 11111

من الملائم استخدام حرف وظيفي في مقتطف الشفرة هذا لأنه سيتم استدعاء وظيفة المقارنة مرة واحدة ولا داعي لتسميتها.

من خلال تحديد وظائف الفرز الأخرى ، يمكنك إجراء مجموعة متنوعة من طرق الفرز.

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

var arr = ؛

arr.concаt (4، 5) // نتيجة

آر. concat () ؛ // نتيجة

آر. concаt (،) // نتيجة

آر. concаt (4،]) // نتيجة]

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

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

var arr = ؛

arr.slice (0.3) ؛ // سيعود

آر. شريحة (3) ؛ // سيعود

آر. شريحة (1 ، -1) ؛ // سيعود

آر. شريحة (-3 ، -2) ؛ // سيعود

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

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

var arr = ؛

arr.splice (4) ، // سيعود؛ arr يصبح متساويا

arr.splice (1،2) ؛ // سيعود؛ arr يصبح متساويا

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

var arr = ؛

arr.splice (2،0، "ab"، "cd") ؛ / * سيعود؛ arr يصبح * /

arr.splice (2،2 ،، 3) ؛ / * سيعود ["ab"، "cd"]؛ arr يصبح ، 3،33،44،55] * /

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

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

كلتا الطريقتين تعدلان المصفوفة الأصلية. عند استخدام مجموعة من التابعين push () و pop () في JavaScript ، يمكنك استخدام مصفوفة لإنشاء مكدس بقاعدة خدمة First-in-last-out.

vаr stаk = ؛ // كومة فارغة

كومة. بوش (1،2) ؛ // المصفوفة: سيعود 2

كومة. البوب ​​() ؛ // المصفوفة: سيعود 2

مكدس بوش (3) ؛ // المصفوفة: سيعود 2

stаk.рр () ، // المصفوفة: سيعود 3

stack.push () ؛ // المصفوفة:] سيعود 2

كومة. pop () // array: سيعود

كومة. البوب ​​() ؛ // المصفوفة: سيعود 1

unshift () و shift () -الطرق التي تعمل تقريبًا مثل push () و pop () ، لكنها لا تُدخل العناصر وتزيلها في نهاية المصفوفة ، ولكن في البداية.

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

var arr = ؛ // arr:

arr.unshift (1) ، // arr: سيعود 1

arr.unshift (22) ، // arr: سيعود 2

arr.shift () ، // arr: سيعود 22

arr.unshift (3 ،) ؛ // arr :، 1] سيعود 3

arr.shift () ، // arr: [، 1] سيعود 3

arr.shift () ، // arr: سيعود

arr.shift () ، // arr: سيعود 1

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

toString () و toLocaleString ()- الطرق التي تحول كل عنصر من عناصر المصفوفة إلى سلسلة وتعرض قائمة مفصولة بفواصل من السلاسل المستلمة. طريقة toString () ، كما لوحظ ، متاحة لأي كائن في JavaScript ، بما في ذلك المصفوفة. لاحظ أن الطرق لا تترك أقواسًا مربعة أو أي فواصل أخرى حول قيم الصفيف.

ToString () // سيعود "1،2،3"

["a"، "b"، "c"]. toString () // سيعيد "a ، b ، c"

] .toString () // سيعود "1،2، s"

سيعيد التابع toString () نفس السلسلة مثل طريقة Join () إذا تم استدعاؤها بدون معلمات.

toLocaleString () - طريقة تربط السلاسل الناتجة باستخدام محدد خاص بمنطقة معينة.

مثال 1. إنشاء لافتة دورية (عرض شرائح).

لنقم بإنشاء مجموعة من الصور التي ستظهر على الصفحة في بعض الفواصل الزمنية.

تغيير الصور

مثال 2. إخراج قول مأثور عشوائي على الصفحة. يظهر قول مأثور عشوائي في كل مرة يتم فيها تحديث الصفحة.

قول مأثور عشوائي على الصفحة

كائن التاريخ

في JavaScript ، تم تصميم كائن التاريخ للعمل مع قيم التاريخ والوقت. يتم إنشاء مثيل لكائن بواسطة مُنشئ Date () باستخدام عامل التشغيل الجديد.

var new_day = تاريخ جديد () ،/ * تم إنشاء مثيل للكائن ، والذي يخزن معلومات حول الوقت والتاريخ الحاليين (يقرأ وقت نظام الكمبيوتر). * /

فار عيد الميلاد = تاريخ جديد (2016 ، 11 ، 25) ؛/ * إنشاء مثيل كائن بتاريخ عيد الميلاد. يتم احتساب أرقام الشهر من الصفر ، لذلك يتم رقم ديسمبر 11 بالترتيب * /

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

Christmas.setFullYear (xmas.getFullYear () + 1) ؛/ * تاريخ عيد الميلاد العام القادم * /

var weekdau = Christmas.getDay () ؛// يوم أسبوع الكريسماس.

document.write ("Today:" + new_day.toLocaleString ()) ؛// قيمة السلسلة للتاريخ والوقت الحاليين.

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

يمكن استخدام المُنشئ عند إنشاء مثيل جديد للكائن Date () بالطرق التالية:

الجديد Dаtе () ؛/ * يُنشئ مُنشئ Date () بدون وسيطات كائنًا تساوي قيمته التاريخ والوقت الحاليين. * /

التاريخ الجديد (number_milliseconds) ؛/ * يتم تحديد القيمة الرقمية الوحيدة في المُنشئ ، ويتم استخدامها كتمثيل للتاريخ بالمللي ثانية ، وهو نفس القيمة التي يتم إرجاعها بواسطة طريقة getTime (). * /

تاريخ جديد (date_string_representation) ؛/ * إذا تم تحديد وسيطة سلسلة واحدة في المُنشئ ، فسيتم معاملتها كسلسلة تمثيل للتاريخ بالتنسيق الذي يقبله أسلوب Date.parse (). * /

تاريخ جديد (السنة ، الشهر ، اليوم ، الساعات ، الدقائق ، الثواني ، ميلي ثانية) ؛/ * يمكن تمرير المُنشئ من وسيطتين إلى سبع وسيطات رقمية تحدد حقلي التاريخ والوقت الفرديين. بصرف النظر عن أول حقلين يشيران إلى السنة والشهر ، تعتبر جميع الوسائط الأخرى اختيارية. * /

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

دعنا نوضح القيم التي يمكن أن تأخذها الوسيطات عند استخدام أشكال مختلفة من المُنشئ:

number_milliseconds هو عدد المللي ثانية بين التاريخ المطلوب ومنتصف ليل 01 يناير 1970 بالتوقيت العالمي المنسق. لنفترض أنه إذا كانت الوسيطة 5000 ، فسيتم إنشاء تاريخ يمثل خمس ثوانٍ بعد منتصف ليل 01/01/1970.

date_string_representation - تحدد الوسيطة التاريخ والوقت الاختياري كسلسلة. يجب تحديد السلسلة بتنسيق يفهمه أسلوب Date.parse ().

العام - أربعة أرقام من السنة. للتوافق مع تطبيقات JavaScript السابقة ، إذا كانت قيمة الوسيطة بين 0 و 99 ، يتم إلحاق الرقم 1900 بقيمته.

اليوم هو عدد صحيح من 1 إلى 31 يمثل يوم من الشهر. الحجة اختيارية.

ساعات هي عدد صحيح من 0 ، مما يعني منتصف الليل ، إلى 23. هذه الوسيطة اختيارية.

الدقائق عدد صحيح من 0 إلى 59. هذه الوسيطة اختيارية.

ثواني. الثواني بالدقائق ، محدد كعدد صحيح من 0 إلى 59. وسيطة اختيارية.

الميلي ثانية هو عدد المللي ثانية ، المحدد كعدد صحيح ، يتراوح من 0 إلى 999. هذه الوسيطة اختيارية.

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

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

كيف يتم إنشاء المصفوفات متعددة الأبعاد وما الغرض منها؟

بادئ ذي بدء ، يجدر بنا أن نتذكر كيف يتم إنشاء مصفوفة عادية أحادية البعد.

مجموعة فار =

تذكر الآن أن المصفوفة متعددة الأبعاد عبارة عن مصفوفة من المصفوفات.أوافق ، يبدو وكأنه حشو. ومع ذلك ، اقرأ التعريف مرة أخرى. في الواقع ، تتكون المصفوفة متعددة الأبعاد من عدد معين من المصفوفات المتداخلة.

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

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

سيبدو كل شيء كما يلي:

var results = [["Markus"، 333]، ["Natasha"، 211]، ["Alexey"، 124]]؛

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

في هذه الحالة ، يتم الوصول إلى العناصر من خلال عامل تشغيل مزدوج.

لتوحيد المادة ، قم بتحليل برنامج صغير.

النتائج =

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

طرق فرز البيانات

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

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

أليكسي ، 124

ماركوس ، 333

ناتاشا ، 211

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

124 ، أليكسي

211 ، ناتاشا

333 ، ماركوس

في هذه الحالة ، للمقارنة ، يتم تحويل جميع العناصر مؤقتًا إلى سلاسل.

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

  • رقم موجب (يتم اختيار 1 بشكل عام) إذا كان العنصر المحدد الأول يتبع الثاني في المقارنة ؛
  • رقم سالب (عادة -1) إذا كان العنصر الثاني المحدد يجب أن يتبع الأول ؛
  • صفر إذا كانت القيمتان المختبرتان متساويتين.

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

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

جدول التسجيل:

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

لذلك ، ستبدو وظيفة الفرز () كما يلي:

1 2 3 4 5 وظيفة RecordSort (أ ، ب) (إذا (أ> ب) إرجاع 1 ؛ وإلا إذا (أ< b) return -1; else return 0; }

وظيفة RecordSort (أ ، ب) (إذا (أ> ب) إرجاع 1 ؛ وإلا إذا (أ< b) return -1; else return 0; }

بعد ذلك ، دعنا نضيف الطريقة أعلاه.

الاستنتاج يتم بطريقة مماثلة.

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

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

مع السلامة!

مع أطيب التحيات ، رومان تشويشوف