المصفوفات في 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 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 بطيئة لأنها تحتاج إلى إعادة ترقيم المصفوفة بأكملها. يمكن أن تتسبب طريقة لصق أيضًا في إعادة الترقيم: ماذا ستكون النتيجة؟ لماذا ا؟ 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. إنشاء لافتة دورية (عرض شرائح). لنقم بإنشاء مجموعة من الصور التي ستظهر على الصفحة في بعض الفواصل الزمنية. Slide = new Array("./pic/1.gif", "./pic/2.gif", "./pic/3.gif", "./pic/4.gif", "./pic/5.gif", "./pic/6.gif", "./pic/7.gif","./pic/8.gif", "./pic/9.gif"); //Изображения находятся во вложенной папке pic k=0; Len=Slide.length; function rotate(){ if (document.images){ document.banner.src=Slide[k]; setTimeout ("rotate()",1*1000); مهمة الدراسة الذاتية
حل
مهمة الدراسة الذاتية
حل
الانضمام والانقسام
مهمة الدراسة الذاتية
حل
استخدام الطول لقص مجموعة
المصفوفة هي كائن ، مما يعني
مفاتيح الصفيف غير الرقمية
وبالتالي ، يكون التغيير / عدم التغيير أبطأ من الدفع / الفرقعة. كلما كانت المصفوفة أكبر ، كلما استغرق الأمر وقتًا أطول لفرز المصفوفة من JavaScript.مهمة الدراسة الذاتية
حل
المصفوفات المتفرقة ، وصف الطول
إزالة من مجموعة
طريقة لصق
مهمة الدراسة الذاتية
حل
طريقة شريحة
الطريقة العكسية