1. فهم المصفوفات
الصفيف عبارة عن مجموعة من أنواع معينة من البيانات ، ويمكن أن تكون أنواع البيانات أعداد صحيحة أو سلاسل أو حتى كائنات.
لا تدعم JavaScript صفائف متعددة الأبعاد ، ولكن نظرًا لأن المصفوفات يمكن أن تحتوي على كائنات (صفائف أيضًا كائنات) ، يمكن للصفائف تحقيق وظائف مشابهة للمصفوفات متعددة الأبعاد عن طريق تعشيش بعضها البعض.
1.1 تحديد صفيف
أعلن صفيف مع 10 عناصر:
نسخة الكود كما يلي: var a = new array (10) ؛
في هذا الوقت ، تم فتح مساحة الذاكرة لـ A ، التي تحتوي على 10 عناصر ، وتم استدعاؤها باسم المصفوفة زائد [Subcript] ، على سبيل المثال ، A [2] ، ولكن لم يتم تهيئة العنصر في هذا الوقت ، وستعود المكالمة غير محددة.
يحدد الكود التالي صفيفًا متغيرًا ويعين القيم.
نسخة الكود كما يلي:
var a = new array () ؛
A [0] = 10 ؛
A [1] = "AAA" ؛
A [2] = 12.6 ؛
كما ذكر أعلاه ، يمكن وضع الكائنات في الصفيف ، مثل الكود التالي:
نسخة الكود كما يلي:
var a = new array () ؛
A [0] = true ؛
a [1] = document.getElementById ("text") ؛
A [2] = {x: 11 ، y: 22} ؛
a [3] = new array () ؛
يمكن أيضًا تعيين المصفوفات مباشرة عند إنشاء مثيل لها ، على سبيل المثال:
نسخة الكود كما يلي:
var a = صفيف جديد (1 ، 2 ، 3 ، 4 ، 5) ؛
var b = [1 ، 2 ، 3 ، 4 ، 5] ؛
A و B هما المصفوفان ، لكن B يستخدم إعلانًا ضمنيًا ويقوم بإنشاء مثيل آخر. في هذا الوقت ، إذا تم استخدام التنبيه (a == b) ، فسيتم ظهور خطأ
1.2 صفيف متعدد الأبعاد
في الواقع ، لا يدعم JavaScript صفائف متعددة الأبعاد. في ASP ، يمكنك استخدام Dim A (10،3) لتحديد المصفوفات متعددة الأبعاد. في JavaScript ، إذا كنت تستخدم var a = new array (10،3) ، فستبلغ عن خطأ.
ولكن كما ذكرنا من قبل ، يمكن أن يحتوي الصفيف على كائنات ، لذلك يمكن إعلان عنصر في الصفيف كصفيف ، على سبيل المثال:
نسخة الكود كما يلي:
var a = new array () ؛
a [0] = new array () ؛
A [0] [0] = 1 ؛
تنبيه (A [0] [0]) ؛ // pop 1
تعيين القيمة عند الإعلان
نسخة الكود كما يلي:
var a = صفيف جديد ([1،2،3] ، [4،5،6] ، [7،8،9]) ؛
var b = [[1،2،3] ، [4،5،6] ، [7،8،9]] ؛
نفس التأثير هو ، يستخدم الاستئصال التقليدي ، B هو إعلان ضمني ، والنتيجة هي صفيف متعدد الأبعاد.
1.3 صفيف حرفي
أنا حقًا لا أعرف ما الذي يطلق عليه الصينية ، صفائف النص؟
الحديث عن المصفوفات ، علينا أن نتحدث عن صفيف الحرفية. المصفوفات هي في الواقع كائنات خاصة. الكائنات لها خصائص وطرق فريدة. يتم الحصول على القيم والمكالمات من خلال أسماء الكائنات والسمات والكائنات والأساليب () ، بينما تستخدم المصفوفات المشتركين للحصول على القيم. تشبه الحرفيات المصفوفة المصفوفات ، وهي مجموعات من أنواع البيانات معينة. ومع ذلك ، فإن Array Distalals هو في الأساس كائن ، وإعلانات ومكالمات تختلف عن المصفوفات:
نسخة الكود كما يلي:
var aa = new Object () ؛
aa.x = "cat" ؛
aa.y = "مشمس" ؛
تنبيه (aa.x) ؛ // pop up cat
إنشاء كائن بسيط. الدعوة العامة من خلال aa.x. إذا تم التعامل معها على أنها حرفية صفيف ، فسوف يظهر Cat بتنبيه (AA ["X"])
نسخة الكود كما يلي:
var a = {x: "cat" ، y: "sunny"} ؛
تنبيه (a ["y"]) ؛ // popt up مشمس
هذه طريقة أخرى لإنشاء كائنات ، والنتيجة هي نفسها
2. تشغيل عناصر الصفيف
كما ذكر أعلاه ، يمكن قراءة العناصر وكتابتها من خلال Array [Subcript]
نطاق الاشتراكات هو 0 (23 (SuperScript 2) -1). عندما تكون الاشتراكات سلبية أو نقطة عائمة أو حتى قيم منطقية ، سيتم تحويل الصفيف تلقائيًا إلى نوع الكائن ، على سبيل المثال:
نسخة الكود كما يلي:
var b = new array () ؛
B [2.2] = "xxxxx" ؛
تنبيه (ب [2.2]) ؛ //-> xxxxx
في هذا الوقت ، يعادل B ["2.2"] = "XXXXX".
2.1 حلقة المصفوفات
نسخة الكود كما يلي:
var a = [1،2،3،4،5،6] ؛
لـ (var i = 0 ؛ i <a.length ؛ i ++) {
تنبيه (a [i]) ؛
}
هذا هو الأكثر استخداما واحد. بعد مرور الصفيف ، سوف يظهر الكود من 1 إلى 6 بدوره.
هناك واحد آخر شائع الاستخدام:
نسخة الكود كما يلي:
var a = [1،2،3،4،5،6] ؛
لـ (var e in a) {
تنبيه (هـ) ؛
}
أو يطفو على السطح من 1 إلى 6 بدوره. ل ... في هو كائن يمر عبر الكائن (الصفيف هو كائن خاص) ويستخدم في الصفيف. نظرًا لأن الصفيف ليس له اسم سمة ، يتم إخراج القيمة مباشرة. يتم استخدام بيان الهيكل هذا على الكائن ، على سبيل المثال:
نسخة الكود كما يلي:
var a = {x: 1 ، y: 2 ، z: 3} ؛
لـ (var e in a) {
تنبيه (e + ":" + a [e]) ؛
}
في هذا الوقت ، تأخذ E اسم السمة ، أي X و Y و X. للحصول على القيمة ، يتم استخدام اسم الصفيف [السمة] ، لذلك فإن [e] يعادل ["x"] ، a [y "] ، a [z"] ، a ["z"]
2.2 وظائف شائعة الاستخدام في المصفوفات
CONCAT
قم بإلحاق الصفيف بعد الصفيف الحالي وإعادة الصفيف الجديد دون التأثير على الصفيف الحالي:
نسخة الكود كما يلي:
var a = [123] ؛
var b = "sunnycat" ؛
var c = ["www" ، 21 ، "Ido"] ؛
var d = {x: 3.14 ، y: "sk"} ؛
var e = [1،2،3،4 ، [5،6 ، [7،8]]] ؛
تنبيه (A.Concat (ب)) ؛ // -> 123 ، Sunnycat
تنبيه (أ) ؛ // -> 123
تنبيه (B.Concat (C ، D)) ؛ // -> sunnycatwww ، 21 ، Ido [كائن كائن]
تنبيه (C.Concat (ب)) ؛ // -> www ، 21 ، Ido ، Sunnycat
ALERT (E.Concat (11،22،33). join (" #")) ؛ // -> 1 # 2 # 3 # 4 # 5،6،7،8 # 11 # 22 # 33
تجدر الإشارة إلى أنه لا يمكن استخدامه إلا للصفائف أو السلاسل. إذا كان Connection (A) عبارة عن عهد أو منطقي أو كائن ، فسيتم الإبلاغ عن خطأ. عندما يتم توصيل السلسلة بالمصفوفة ، سيتم تقسيم السلسلة بالعنصر الأول من الصفيف إلى عنصر جديد ، وسيتم إضافة السلسلة المتصلة مع السلسلة (لا أعرف السبب في ذلك ، يرجى الكشف عنها إذا كنت على دراية بالمعلومات). بالنسبة لأولئك الذين يحتويون على المصفوفات والكائنات ، احتفظ بها بعد الاتصال.
ينضم
قم بتوصيل المصفوفة في سلسلة مع فاصل محدد:
نسخة الكود كما يلي:
var a = ['a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g'] ؛
Lert (A.Join ("،")) ؛ // -> A ، B ، C ، D ، E ، F ، G تعادل A.ToString ()
ALERT (A.Join ("X")) ؛ // -> axbxcxdxexfxg
من السهل فهم هذا ، ولكن تجدر الإشارة إلى أنه يتم تحويله فقط إلى صفيف أحادي البعد. إذا كان هناك صفيف في الصفيف ، فلن يستخدم السلسلة المحددة بواسطة Join
نسخة الكود كما يلي:
var a = ['a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g' ، [11،22،33]] ؛
تنبيه (A.Join (" *")) ؛ // -> a * b * c * d * e * f * g * 11،22،33
ملاحظة: لا يتم استخدام الصفيف في الصفيف للاتصال *
البوب
حذف العنصر الأخير من الصفيف وإرجاع العنصر
نسخة الكود كما يلي:
var a = ["aa" ، "bb" ، "cc"] ؛
document.write (A.Pop ()) ؛ // -> CC
document.write (a) ؛ // -> AA ، BB
ملاحظة: إذا كانت الصفيف فارغة ، فسيتم إرجاع غير محدد.
يدفع
أضف صفيفًا خلف الصفيف وأرجع الطول الجديد للمصفوفة
نسخة الكود كما يلي:
var a = ["aa" ، "bb" ، "cc"] ؛
document.write (A.Push ("DD")) ؛ // -> 4
document.write (a) ؛ // -> AA ، BB ، CC ، DD
document.write (A.Push ([1،2،3])) ؛ // -> 5
document.write (a) ؛ // -> AA ، BB ، CC ، DD ، 1،2،3
الفرق من Concat هو أن Concat لا يؤثر على الصفيف الأصلي ، فإنه يعيد مباشرة الصفيف الجديد ، في حين يعدل Push مباشرة الصفيف الأصلي ، الذي يعيد الطول الجديد للمصفوفة.
نوع
فرز الصفيف ، دعنا نلقي نظرة أولاً على مثال
نسخة الكود كما يلي:
var a = [11،2،3،33445،5654،654 ، "asd" ، "b"] ؛
تنبيه (A.Sort ()) ؛ // -> 11،2،3،33445،5654،654 ، ASD ، ب
هل النتيجة مفاجئة للغاية؟ نعم ، لا يعتمد الفرز على حجم عدد صحيح ، ولكن على مقارنة السلسلة ، وهو مقارنة رمز ANSI للحرف الأول ، والصغيرة في المقدمة. إذا كان الشيء نفسه صحيحًا ، فسيتم مقارنة الشخصية الثانية. إذا كنت ترغب في المقارنة وفقًا لقيم عدد صحيح ، فيمكنك القيام بذلك.
نسخة الكود كما يلي:
var a = [11،2،3،33445،5654،654] ؛
A.Sort (وظيفة (أ ، ب) {
إرجاع أ - ب ؛
}) ؛
تنبيه (أ) ؛ // -> 2،3،11،654،5654،33445
تحتوي طريقة SORT () على معلمة اختيارية ، وهي الوظيفة في الكود. هذا مثال بسيط. لا يمكن فرز غير الأرقام. يجب الحكم على غير الأرقام أكثر ، لذلك لن أتحدث عنها هنا.
يعكس
فرز الصفيف و sort () عكسيا ، خذ قيمة ASCII الأولى وقارنها
نسخة الكود كما يلي:
var a = [11،3،5،66،4] ؛
تنبيه (A.Reverse ()) ؛ // -> 4،66،5،3،11
إذا كان الصفيف يحتوي أيضًا على صفيف ، فلن يحل العناصر إذا تمت معالجته ككائن.
نسخة الكود كما يلي:
var a = ['a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g' ، [4،11،33]] ؛
تنبيه (A.Reverse ()) ؛ // -> 4،11،33 ، g ، f ، e ، d ، c ، b ، a
تنبيه (A.Join (" *")) ؛ // -> 4،11،33 * g * f * e * d * c * b * a
يجب أن يكون آخر 11 ، لأن 4 ، 11 ، 33 تعتبر مقارنة كائن كامل ، لذلك يتم تصنيفها أولاً.
إذا لم تتمكن من فهمه ، فاستخدم Join () لتلقيحه معًا ، وسيكون أكثر وضوحًا
يحول
حذف العنصر الأول من الصفيف وإرجاع العنصر ، وهو مشابه للبوب
نسخة الكود كما يلي:
var a = ["aa" ، "bb" ، "cc"] ؛
document.write (A.Shift ()) ؛ // -> aa
document.write (a) ؛ // -> BB ، CC
ملاحظة: عندما تكون الصفيف فارغة ، يتم إرجاع غير محدد.
إلغاء الهاوية
على عكس التحول ، أضف عناصر إلى مقدمة الصفيف وإرجاع الطول الجديد للمصفوفة.
نسخة الكود كما يلي:
var a = ["aa" ، "bb" ، "cc"] ؛
document.write (A.Unshift (11)) ؛ // -> 4 ملاحظة: يتم إرجاع غير محدد في IE
document.write (a) ؛ // -> 11 ، AA ، BB ، CC
document.write (A.UNSHIFT ([11،22])) ؛ // -> 5
document.write (a) ؛ // -> 11،22،11 ، AA ، BB ، CC
document.write (A.UNSHIFT ("Cat")) ؛ // -> 6
document.write (a) ؛ // -> Cat ، 11،22،11 ، AA ، BB ، CC
انتبه إلى هذه الطريقة ، سيتم إرجاع غير محدد في IE ، والذي يبدو أنه خطأ مع Microsoft. يمكنني لعب الطول الجديد للمصفوفة تحت فايرفوكس.
شريحة
شظية مجموعة العودة
نسخة الكود كما يلي:
var a = ['a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g'] ؛
تنبيه (A.Slice (1،2)) ؛ // -> ب
تنبيه (A.Slice (2)) ؛ // -> C ، D ، E ، F ، G.
تنبيه (A.Slice (-4)) ؛ // -> D ، E ، F ، G.
تنبيه (A.Slice (-2 ، -6)) ؛ // -> فارغة
أ.
إذا كان هناك معلمة واحدة فقط ، فإن الافتراضي هو في نهاية الصفيف
-4 يمثل العنصر الرابع الأخير ، لذلك يتم إرجاع العناصر الأربعة في العد التنازلي
يبدأ السطر الأخير من الثاني إلى الأخير. نظرًا لأنه يتم اعتراضه لاحقًا ، فمن الواضح أنه من المستحيل استرداد العنصر السابق ، لذلك يعيد صفيفًا فارغًا. إذا تم تغييره إلى A.Slice (-6 ، -2) ، فإنه يعود B ، C ، D ، E
لصق
حذف عنصر جزء من الصفيف وإرجاع العنصر المحذوف
نسخة الكود كما يلي:
var a = [1،2،3،4،5،6،7،8،9] ؛
document.write (A.Splice (3،2)) ؛ // -> 4،5
document.write (a) ؛ // -> 1،2،3،6،7،8،9
document.write (A.Splice (4)) ؛ // -> 7،8،9 ملاحظة: العودة فارغة تحت أي
document.write (a) ؛ // -> 1،2،3،6
document.write (A.Splice (0،1)) ؛ // -> 1
document.write (a) ؛ // -> 2،3،6
document.write (A.Splice (1،1 ، ["AA" ، "BB" ، "CC"])) ؛ // -> 3
document.write (a) ؛ // -> 2 ، AA ، BB ، CC ، 6،7،8،9
document.write (A.Splice (1،2 ، "EE"). Join ("#")) ؛ // -> AA ، BB ، CC#6
document.write (a) ؛ // -> 2 ، EE ، 7،8،9
document.write (A.Splice (1،2 ، "CC" ، "AA" ، "TT"). Join ("#")) ؛ // -> EE#7
document.write (a) ؛ // -> 2 ، CC ، AA ، TT ، 8،9
لاحظ أن هذه الطريقة في IE. المعلمة الثانية ضرورية. إذا لم يتم ملؤها ، فسيتم تقصيرها إلى 0. على سبيل المثال ، A.Splice (4) ، وفي IE ، ستعود فارغة. التأثير يعادل A.Splice (4،0)
tostring
تحويل المصفوفات إلى سلاسل ، وليس فقط المصفوفات ، ولكن يمكن لجميع الكائنات استخدام هذه الطريقة
نسخة الكود كما يلي:
var a = [5،6،7،8،9 ، ["A" ، "BB"] ، 100] ؛
document.write (A.ToString ()) ؛ // -> 5،6،7،8،9 ، A ، BB ، 100
var b = تاريخ جديد ()
document.write (B.ToString ()) ؛ // -> السبت 8 أغسطس 17:08:32 UTC+0800 2009
var c = function (s) {
التنبيه (s) ؛
}
document.write (c.toString ()) ؛ // -> function (s) {Alert (s) ؛ }
القيمة المنطقية إرجاع صحيح أو خطأ ، واسم كائن كائن الكائن]
بالمقارنة مع طريقة Join () ، فإن Join () يحل محل المصفوفات أحادية البعد فقط ، في حين أن ToString () ينطوي تمامًا على الصفيف بأكمله (بغض النظر عن أحادي البعد أو متعدد الأبعاد).
في الوقت نفسه ، يمكن استخدام هذه الطريقة في التحويل العشري والثنائي والهندس وسداسي عشرية ، على سبيل المثال:
نسخة الكود كما يلي:
var a = [5،6،7،8،9 ، "A" ، "BB" ، 100] ؛
لـ (var i = 0 ؛ i <a.length ؛ i ++) {
document.write (a [i] .toString () + "binary is" + a [i] .toString (2) + "، Octal is" + a [i] .toString (8) + "، hexadecimal is" + a [i] .toString (16)) ؛ // -> 4،5
}
نتيجة الإخراج:
نسخة الكود كما يلي:
الثنائي 5 هو 101 ، أوكتال هو 5 ، والسداسي عشري 5
الثنائي 6 هو 110 ، أوكتال هو 6 ، والسداسي عشري هو 6
الثنائي من 7 هو 111 ، و Octal هو 7 ، والسداسي عشري هو 7
الثنائي 8 هو 1000 ، أوكتال هو 10 ، والسداسي عشري هو 8
الثنائي من 9 هو 1001 ، و Octal هو 11 ، والسداسي عشري 9
ثنائي A هو A ، أوكتال هو ، والسداسي عشري
ثنائي BB هو BB ، و Octal هو BB ، و hexadecimal هو BB.
الثنائي من 100 هو 1100100 ، أوكتال هو 144 ، والسداسي عشري هو 64.
لا يمكن إجراء التحويل إلا على العناصر. إذا تم تحويل المصفوفة بأكملها ، فسيتم إرجاع الصفيف سليمة.
tolocalestring
إرجاع سلسلة التنسيق المحلي ، تستخدم بشكل رئيسي في كائن التاريخ
نسخة الكود كما يلي:
var a = new date () ؛
document.write (A.ToString ()) ؛ // -> السبت 8 أغسطس 17:28:36 UTC+0800 2009
document.write (a.tolocalestring ()) ؛ // -> 8 أغسطس 2009 17:28:36
document.write (A.TolocalEdateString ()) ؛ // -> 8 أغسطس 2009
الفرق هو أن ToString () يعيد التنسيق القياسي ، ويعيد التولوكاليسترينغ () التاريخ الكامل للتنسيق المحلي (في [لوحة التحكم] >> [خيارات المنطقة واللغة] ، عن طريق تعديل [الوقت] و [التاريخ الطويل]) ، التولوكالدياتيستريغ () هو نفسه مثل tolocalestring () ولكنه يأخذ وقتًا أقل.
قيمة
إرجاع قيم أصلية مختلفة وفقًا للكائنات المختلفة. إذا تم استخدامه للإخراج ، فهو يشبه tostring (). ومع ذلك ، يقوم ToString () بإرجاع نوع السلسلة ، ويقوم ValueOF () بإرجاع نوع الكائن الأصلي
نسخة الكود كما يلي:
var a = [1،2،3 ، [4،5،6 ، [7،8،9]]] ؛
var b = date new () ؛
var c = true ؛
var d = function () {
تنبيه ("sunnycat") ؛
} ؛
document.write (a.valueof ()) ؛ // -> 1،2،3،4،5،6،7،8،9
document.write (typeof (a.valueof ())) ؛ // -> كائن
document.write (b.valueof ()) ؛ // -> 1249874470052
document.write (typeof (B.Valueof ())) ؛ // -> الرقم
document.write (c.valueof ()) ؛ // -> صحيح
document.write (typeof (c.valueof ())) ؛ // -> منطقية
document.write (d.valueof ()) ؛ // -> function () {Alert ("sunnycat") ؛ }
document.write (typeof (d.valueof ())) ؛ // -> وظيفة
المصفوفات هي أيضًا كائنات ، لذا فإن typeof (a.valueof ()) إرجاع الكائن ، والمصفوفة المتعددة الأبعاد التي تم إرجاعها لا تزال
نسخة الكود كما يلي:
var a = [1،2،3 ، [4،5،6 ، [7،8،9]]] ؛
var aa = a.valueof () ؛
document.write (aa [3] [3] [1]) ؛ // -> 8
يعيد كائن التاريخ عدد المللي ثانية من 1 يناير 1970 ، ولا تحتوي كائنات الرياضيات والخطأ على طريقة قيمة.