في JavaScript ، يمكن إنشاء صفائف باستخدام مُنشئ الصفيف ، أو تم إنشاؤها بسرعة باستخدام [] ، والتي هي أيضًا الطريقة المفضلة. الصفيف عبارة عن نموذج أولي ورث من الكائن ، وليس له قيمة إرجاع خاصة للنوع ، فإنه يعيد فقط "كائن".
1. Array.Prototype.Slice Method
عادة ما تستخدم طريقة شريحة الصفيف لاستخراج أجزاء من صفيف. ومع ذلك ، فإنه لديه أيضًا القدرة على تحويل "صفائف الفصل" (مثل الحجج و HTMLCollection) إلى صفائف حقيقية.
نسخة الكود كما يلي:
var newesarr = array.prototype.slice.call (document.forms) ؛
var argsarr = array.prototype.slice.call (الحجج) ؛
كنت فضوليًا لماذا تتمتع طريقة شريحة المصفوفات بمثل هذه المهارة ، وكيف يتم تنفيذها في محرك JavaScript؟ هل الطريقة الأخوية للشريحة لها مثل هذه المهارات؟
مع الفضول ، قم بتنزيل رمز مصدر محرك جافا سكريبت من Google إلى المنطقة المحلية. عنوان تنزيل رمز المصدر V8 هو: https://github.com/v8/v8.
البحث عن "array.prototype.slice" في V8-master/src/array.js:
نسخة الكود كما يلي:
دالة صفيفات (ابدأ ، نهاية) {
check_object_coencible (هذا ، "Array.Prototype.slice") ؛
...
var result = [] ؛ // هذه الجملة هي المفتاح
if (end_i <start_i) نتيجة الإرجاع ؛
if (useparsevariant (Array ، Len ، is_array (Array) ، end_i - start_i)) {
...
Sparseslice (Array ، Start_i ، end_i - start_i ، len ، result) ؛
} آخر {
SimplesLice (Array ، start_i ، end_i - start_i ، len ، result) ؛
}
...
نتيجة العودة
بعد ذلك ، أعتقد أنه يجب استخدام طريقة SimplesLice التي تستدعي "صفيف الفئة" ، ثم البحث عن "SimplesLice" في الكود المصدري ووجدت أن طريقة SimplesLice تسمى أيضًا في رمز المصدر. ومع ذلك ، إذا كنت ترغب في استخدام طريقة لصق لتحويل "صفيف الفئة" إلى صفيف حقيقي ، فيجب عليك تمرير معلمة موضع البداية إلى 0 ، أي:
نسخة الكود كما يلي:
var newesarr = array.prototype.splice.call (document.forms ، 0) ؛
لأن مبدأ التنفيذ الخاص به هو تكوين مجموعة جديدة بواسطة عناصر الصفيف المحذوفة. إذا كنت مهتمًا ، فيمكنك التحقق من تنفيذ رمز المصدر لـ Array.Prototype.Splice.
بالإضافة إلى ذلك ، يمكن لشريحة أيضًا استنساخ صفيف:
نسخة الكود كما يلي:
var arr = [1 ، 2 ، 3] ؛
var clonearr = arr.slice () ؛ // Clonearr: [1 ، 2 ، 3]
2. array.prototype.push طريقة
استخدم طريقة الدفع لدمج المصفوفات:
نسخة الكود كما يلي:
var arr1 = [1 ، 'str' ، {name: 'lang'}] ؛
var arr2 = [2 ، 'ing'] ؛
Array.Prototype.push.apply (arr1 ، arr2) ؛
// نتيجة العودة: [1 ، "str" ، {name: 'lang'} ، 2 ، "ing"]
3. Array.Prototype.Sort طريقة
قم بتحميل الرمز أولاً:
نسخة الكود كما يلي:
var arr = ['1' ، '2' ، '10' ، '12'] ؛
arr.sort () ؛
// نتيجة العودة: ["1" ، "10" ، "12" ، "2"]
النتائج المذكورة أعلاه عادة ليست ما نريد ، فكيف نفرز حسب الحجم العددي:
نسخة الكود كما يلي:
arr.sort (وظيفة (a ، b) {
إرجاع أ - ب ؛
})
// نتيجة العودة: ["1" ، "2" ، "10" ، "12"]
مع وظيفة المقارنة الفرز ، يمكنك تخصيص العديد من المقارنات لتحقيق الفرز الشخصي.
4. السمة الطول
السمة الطول للمصفوفة ليست قراءة فقط ، مما يعني أنه يمكن كتابته. على سبيل المثال ، استخدم سمة الطول لاقتطاع المصفوفة:
نسخة الكود كما يلي:
var arr = [1 ، 2 ، 3 ، 4] ؛
arr.length = 2 ؛
// arr: [1 ، 2]
arr.length = 0 ؛
// arr: []
في الوقت نفسه ، إذا تمت زيادة سمة الطول ، ستزداد قيمة طول الصفيف ، ويتم استخدام غير محدد كعنصر جديد لملءه.
نسخة الكود كما يلي:
var arr = [] ؛
arr.length = 3 ؛
// arr: [غير محدد ، غير محدد ، غير محدد]
حسنًا ، دعنا ننتهي هذا اليوم. إنه بالفعل في الصباح الباكر. إذا كان لديك أي اكتشافات جديدة في المستقبل ، فسوف تقوم بإلحاقها هنا.
من قبل ، لم يكن لدي عادة كتابة المدونات ، لكنني اعتدت فقط على وضع ملخص المعتاد في ملاحظات youdaoyun. لم أكن أتوقع أن يتطلب الأمر بعض التفكير في كتابة آرائي ، لأنه كان علي أن أفكر في كيفية التعبير عنها حتى يتمكن الآخرون من فهمها بشكل أفضل.
إذا كان لديك أي تعبير خاطئ أو فهم خاطئ ، آمل أن يتمكن الجميع من مساعدتك في تصحيحني.
إرفاق أيضًا بعض طرق صفيف جافا سكريبت شائعة الاستخدام
CORCAT () CONCATENS يسلطان صفيفتين أو أكثر ويعيد النتيجة.
الانضمام () يضع جميع عناصر الصفيف في سلسلة. يتم فصل العناصر بواسطة محددات محددة.
pop () يحذف ويعيد العنصر الأخير من المصفوفة
يضيف Push () عنصرًا واحدًا أو أكثر إلى نهاية الصفيف ويعيد الطول الجديد.
عكس () عكس () يعكس ترتيب العناصر في الصفيف.
Shift () حذف وإرجاع العنصر الأول من الصفيف
Slice () إرجاع العنصر المحدد من صفيف موجود
فرز () يفرز عناصر الصفيف
splice () يحذف العنصر ويضيف عناصر جديدة إلى الصفيف.
يقوم Tosource () بإرجاع الكود المصدري للكائن
ToString () يحول الصفيف إلى سلسلة ويعيد النتيجة.
Tolocalestring () يحول الصفيف إلى صفيف محلي ويعيد النتيجة.
يضيف Unshift () عنصرًا أو أكثر إلى بداية الصفيف ويعيد طولًا جديدًا.
valueof () إرجاع القيمة الأصلية لكائن الصفيف