أسئلة المقابلة التي غالبا ما تظهر في الاختبار كتابي. تختلف المصفوفات في JavaScript إلى حد ما عن تلك في اللغات الأخرى. من أجل تسهيل تعلم أساليب الصفيف ، قام المحرر بتجميع أساليب التشغيل للمصفوفات لك أدناه. دعونا نلقي نظرة.
خلق صفيف
هناك طريقتان لإنشاء صفائف في JavaScript. الأول هو استخدام مُنشئ الصفيف:
var arr1 = new array () ؛ // إنشاء صفيف فارغ var arr2 = صفيف جديد (20) ؛ // إنشاء صفيف مع 20 عنصرًا var arr3 = صفيف جديد ("Lily" ، "Lucy" ، "Tom") ؛ // قم بإنشاء صفيف مع 3 سلاسلالطريقة الأساسية الثانية لإنشاء صفيف هي استخدام التدوين الحرفي الصفيف:
var arr4 = [] ؛ // إنشاء صفيف فارغ var arr5 = [20] ؛ // إنشاء صفيف يحتوي على عنصر واحد var arr6 = ["Lily" ، "Lucy" ، "Tom"] ؛ // إنشاء صفيف يحتوي على 3 سلاسل
عند قراءة وضبط قيم صفيف ، استخدم قوسين مربعًا وتوفير فهرس رقمي قائم على القيمة المقابلة:
var arr6 = ["Lily" ، "Lucy" ، "Tom"] ؛ // إنشاء تنبيه صفيف (ARR6 [0]) ؛ // lilyarr6 [1] = "Mary" ؛ // تعديل العنصر الثاني إلى MaryArr6 [3] = "Sean" ؛ // أضف العنصر الرابع إلى شون
يمكن تعديل خاصية طول صفيف في JavaScript ، انظر المثال التالي:
var arr = ["Lily" ، "Lucy" ، "Tom"] ؛ // إنشاء صفيف يحتوي على 3 سلاسل arr [arr.length] = "sean" ؛ // أضف "sean" arr.length = arr.length-1 في التراجع 3 (أي نهاية الصفيف).
إذا كنت بحاجة إلى تحديد ما إذا كان كائن ما هو كائن صفيف ، قبل ECMASCRIPT 5 ، يمكننا استخدام ArtyOf Array للحكم ، ولكن المشكلة في عامل التشغيل من OF هي أنه يفترض أن هناك بيئة تنفيذ عالمية واحدة فقط. إذا كانت صفحة الويب تحتوي على أطر عمل متعددة ، فهناك بالفعل أكثر من بيئتين مختلفتين للتنفيذ العالمي ، وبالتالي هناك أكثر من نسختين مختلفتين من مُنشئ الصفيف. إذا قمت بتمرير مجموعة من إطار عمل إلى آخر ، فإن الصفيف الذي تم تمريره يحتوي على مُنشئين مختلفين من الصفيف الذي تم إنشاؤه أصلاً في الإطار الثاني.
أضافت ECMASCRIPT 5 طريقة Array.isarray (). الغرض من هذه الطريقة هو تحديد ما إذا كانت القيمة عبارة عن صفيف ، بغض النظر عن بيئة التنفيذ العالمية التي تم إنشاؤها.
طريقة الصفيف
لنبدأ بإدخال طريقة الصفيف. تتضمن طرق المصفوفة أساليب النموذج الأولي والأساليب الموروثة من كائنات الكائنات. هنا سنقدم فقط أساليب النموذج الأولي للمصفوفة. تتضمن طرق النموذج الأولي المصفوفة بشكل أساسي ما يلي:
ينضم()
push () و pop ()
Shift () و unsonshift ()
نوع()
يعكس()
CONCAT ()
شريحة()
لصق()
indexof () و LastIndexof () (تمت إضافته حديثًا إلى ES5)
foreach () (تمت إضافته حديثًا في ES5)
MAP () (تمت إضافتها حديثًا إلى ES5)
Filter () (تمت إضافته حديثًا إلى ES5)
كل () (تمت إضافته حديثًا إلى ES5)
بعض () (تمت إضافته حديثًا إلى ES5)
قلل () وخفض () (تمت إضافته حديثًا إلى ES5)
دعم المتصفح الجديد لـ ES5:
أوبرا 11+
Firefox 3.6+
Safari 5+
Chrome 8+
Internet Explorer 9+
بالنسبة لإصدارات المتصفح المدعومة ، يمكن تنفيذها من خلال تمديد النموذج الأولي للمصفوفة. فيما يلي مقدمة مفصلة للوظائف الأساسية لكل طريقة.
1. انضم ()
انضم إلى (فاصل): عناصر المجموعة من المصفوفة في سلسلة ، مع فاصل كفاصل. إذا تم حذفه ، استخدم الفواصل كفاصل افتراضيًا. هذه الطريقة تستقبل فقط معلمة واحدة: أي ، فاصل.
var arr = [1،2،3] ؛ console.log (arr.join ()) ؛ // 1،2،3console.log (arr.join ("-")) ؛ // 1-2-3console.log (arr) ؛ // [1 ، 2 ، 3] (لا يزال الصفيف الأصلي بدون تغيير)يمكن استخدام طريقة Join () لتكرار السلسلة. فقط تمرير في السلسلة وعدد التكرار لإرجاع السلسلة المتكررة. الوظيفة كما يلي:
وظيفة تكرار (str ، n) {return new array (n + 1). // abcabcabcconsole.log (REPERSTRING ("HI" ، 5)) ؛ // hihihihihi2. push () و pop ()
Push (): يمكنك تلقي أي عدد من المعلمات ، وإضافتها واحدة تلو الأخرى إلى نهاية الصفيف ، وإرجاع طول الصفيف المعدل.
POP (): قم بإزالة العنصر الأخير في نهاية الصفيف ، وقلل من قيمة طول الصفيف ، ثم إرجاع العنصر الذي تمت إزالته.
var arr = ["Lily" ، "Lucy" ، "Tom"] ؛ var count = arr.push ("jack" ، "sean") ؛ console.log (count) ؛ // 5console.log (arr) ؛ // ["Lily" ، "Lucy" ، "Tom" ، "Jack" ، "Sean"] var item = arr.pop () ؛ console.log (item) ؛ // seanconsole.log (arr) ؛ // ["Lily" ، "Lucy" ، "Tom" ، "Jack"]3. Shift () و unsonshift ()
Shift (): حذف العنصر الأول من الصفيف الأصلي وإرجاع قيمة العنصر المحذوف ؛ إذا كان الصفيف فارغًا ، فأعد غير محدد.
Unsonft: أضف الوسيطة إلى بداية الصفيف الأصلي وأرجع طول الصفيف.
هذه المجموعة من الطرق تتوافق تمامًا مع طرق PUSH () و POP () أعلاه. أحدهما بداية صفيف المعامل والآخر هو نهاية مجموعة المعامل.
var arr = ["Lily" ، "Lucy" ، "Tom"] ؛ var count = arr.unshift ("jack" ، "sean") ؛ console.log (count) ؛ // 5console.log (arr) ؛ // ["Jack" ، "Sean" ، "Lily" ، "Lucy" ، "Tom"] var item = arr.shift () ؛ console.log (item) ؛ // jackconsole.log (arr) ؛ // ["شون" ، "ليلي" ، "لوسي" ، "توم"]4. الفرز ()
Sort (): ترتيب عناصر الصفيف بالترتيب الصاعد - أي أن أصغر قيمة في المقدمة والقيمة الأكبر في النهاية.
عند الفرز ، تستدعي طريقة SORT () طريقة تحويل TOSTRING () لكل عنصر صفيف ، ثم تقارن السلسلة الناتجة لتحديد كيفية الفرز. حتى إذا كان كل عنصر في الصفيف قيمة رقمية ، فإن طريقة SORT () تقارن السلسلة ، وبالتالي فإن الموقف التالي يحدث:
var arr1 = ["A" ، "D" ، "C" ، "B"] ؛ console.log (arr1.sort ()) ؛ // ["A" ، "B" ، "C" ، "D"] arr2 = [13 ، 24 ، 51 ، 3] ؛ console.log (arr2.sort ()) ؛ // [13 ، 24 ، 3 ، 51] (تم تغيير صفيف التعريف)
لحل المشكلة أعلاه ، يمكن أن تتلقى طريقة SORT () وظيفة مقارنة كمعلمة بحيث نحدد القيمة التي تقضي على القيمة. تتلقى وظيفة المقارنة معلمتين ، وإرجاع رقم سالب إذا كان يجب أن تكون المعلمة الأولى قبل الثانية ، وإرجاع 0 إذا كانت المعلمتين متساوية ، ويعيد رقمًا إيجابيًا إذا كان يجب أن تكون المعلمة الأولى بعد الثانية. فيما يلي وظيفة مقارنة بسيطة:
الدالة مقارنة (value1 ، value2) {if (value1 <value2) {return -1 ؛} if (value1> value2) {return 1 ؛} else {return 0 ؛}} arr2 = [13 ، 24 ، 51 ، 3] // [3 ، 13 ، 24 ، 51]إذا كنت بحاجة إلى إنشاء نتائج الفرز التنازلي من خلال وظيفة المقارنة ، فما عليك سوى تبادل القيم التي يتم إرجاعها بواسطة وظيفة المقارنة:
الدالة CORPARE (value1 ، value2) {if (value1 <value2) {return 1 ؛} آخر إذا (value1> value2) {return -1 ؛} else {return 0 ؛}} arr2 = [13 ، 24 ، 51 ، 3] // [51 ، 24 ، 13 ، 3]5. عكسي ()
عكس (): انقلب ترتيب عناصر الصفيف.
var arr = [13 ، 24 ، 51 ، 3] ؛ console.log (arr.reverse ()) ؛ // [3 ، 51 ، 24 ، 13] console.log (arr) ؛ // [3 ، 51 ، 24 ، 13] (تغيير الصفيف الأصلي)
6. CONCAT ()
CONCAT (): أضف الوسيطة إلى الصفيف الأصلي. ستقوم هذه الطريقة أولاً بإنشاء نسخة من الصفيف الحالي ، ثم إضافة المعلمات المستلمة إلى نهاية النسخة ، وأخيراً أعد الصفيف الذي تم بناؤه حديثًا. دون تمرير المعلمات إلى طريقة COST () ، فإنه ببساطة ينسخ الصفيف الحالي ويعيد نسخة.
var arr = [1،3،5،7] ؛ var arrcopy = arr.concat (9 ، [11،13]) ؛ console.log (arrcopy) ؛ // [1 ، 3 ، 5 ، 7 ، 9 ، 11 ، 13] console.log (arr) ؛ // [1 ، 3 ، 5 ، 7] (لم يتم تعديل الصفيف الأصلي)
من نتائج الاختبار أعلاه ، يمكننا أن نجد ما يلي: إذا كان ما تم تمريره ليس صفيفًا ، فسيتم إضافة المعلمات مباشرة إلى الصفيف. إذا كان ما تم تمريره هو صفيف ، فسيتم إضافة العناصر الموجودة في الصفيف إلى الصفيف. ولكن ماذا لو مرت الشخص في صفيف ثنائي الأبعاد؟
var arrcopy2 = arr.concat ([9 ، [11،13]]) ؛ console.log (arrcopy2) ؛ // [1 ، 3 ، 5 ، 7 ، 9 ، Array [2]] console.log (arrcopy2 [5]) ؛ // [11 ، 13]
في الكود أعلاه ، فإن العنصر الخامس من صفيف ARRCOPY2 هو صفيف يحتوي على عنصرين. وهذا يعني أن طريقة COSTAT يمكنها فقط إضافة كل عنصر تم تمريره إلى الصفيف إلى الصفيف. إذا كانت بعض العناصر التي تم تمريرها في الصفيف صفائف ، فسيتم إضافة عنصر الصفيف هذا أيضًا إلى ARRCOPY2 كعنصر.
7. شريحة ()
SLICE (): إرجاع مجموعة جديدة تتكون من عناصر من مجموعة START المحددة إلى النشر النهائي في الصفيف الأصلي. يمكن أن تقبل طريقة الشريحة () معلمة أو معلمتين ، أي المواضع البدء والنهاية للعنصر المراد إرجاعه. في حالة معلمة واحدة فقط ، تقوم طريقة Slice () بإرجاع جميع العناصر التي تبدأ من الموضع المحدد للمعلمة إلى نهاية الصفيف الحالي. إذا كانت هناك معلمتان ، فإن الطريقة تُرجع العنصر بين مواقع البدء والنهاية - ولكن لا يتضمن العنصر في الموضع النهائي.
var arr = [1،3،5،7،9،11] ؛ var arrcopy = arr.slice (1) ؛ var arrcopy2 = arr.slice (1،4) ؛ var arrcopy3 = arr.slice (1 ، -2) ؛ var arrcopy4 = arr.slice (-4 ، -1) ؛ console.log (arr) ؛ // [1 ، 3 ، 5 ، 7 ، 9 ، 11] (لم يتغير الصفيف الأصلي) console.log (arrcopy) ؛ // [3 ، 5 ، 7 ، 9 ، 11] console.log (arrcopy2) ؛ // [3 ، 5 ، 7] console.log (arrcopy3) ؛ // [3 ، 5 ، 7 ، 11] console.log (arrcopy2) ؛ // [3 ، 5 ، 7] console.log (arrcopy3) ؛ // [3 ، 5 ، 7] console.log (arrcopy4) ؛ // [5 ، 7 ، 9]
يقوم Arrcopy فقط بتعيين معلمة واحدة ، أي أن تراكب البداية هو 1 ، وبالتالي فإن الصفيف الذي تم إرجاعه هو التراجع 1 (بما في ذلك التراجع 1) ويبدأ في نهاية المصفوفة.
يقوم ARRCOPY2 بتعيين معلمتين ، وإرجاع مجموعة فرعية من START CORPRICT (بما في ذلك 1) والبدء إلى النهاية النهائي (باستثناء 4).
يقوم ARRCOPY3 بتعيين معلمتين ، ويقوم بإنهاء المرتبة كرقم سالب. عند حدوث رقم سالب ، أضف الرقم السلبي إلى قيمة طول الصفيف (6) لاستبدال الرقم في هذا الموضع ، لذلك فهو سائق فرعي يبدأ من 1 إلى 4 (باستثناء).
كل من المعلمات في ARRCOPY4 هي أرقام سالبة ، لذلك تتم إضافتها إلى طول الصفيف 6 وتحويلها إلى أرقام إيجابية ، لذلك تعادل شريحة (2،5).
8. لصق ()
splice (): طريقة صفيف قوية للغاية ، لها العديد من الاستخدامات ، والتي يمكن أن تنفذ الحذف والإدراج والاستبدال.
حذف: يمكنك حذف أي عدد من العناصر ، فقط حدد معلمتين: موقع العنصر الأول الذي يتم حذفه وعدد العناصر المراد حذفها. على سبيل المثال ، ستحذف Splice (0،2) العنصرين الأولين في المصفوفة.
إدراج: يمكنك إدراج أي عدد من العناصر في الموضع المحدد ، فقط توفير 3 معلمات: موضع بدء ، 0 (عدد العناصر المراد حذفها) ، والعناصر المراد إدراجها. على سبيل المثال ، سيتم إدراج لصق (2،0،4،6) 4 و 6 من الموضع 2 من الصفيف الحالي.
استبدال: يمكنك إدراج أي عدد من العناصر في الموضع المحدد وحذف أي عدد من العناصر في نفس الوقت. تحتاج فقط إلى تحديد 3 معلمات: موضع البداية ، وعدد العناصر المراد حذفها ، وأي عدد من العناصر المراد إدراجها. لا يجب أن يكون عدد العناصر المدرجة مساوياً لعدد العناصر المحذوفة. على سبيل المثال ، يحذف Splice (2،1،4،6) العنصر في موضع الصفيف الحالي 2 ، ثم يدرج 4 و 6 من الموضع 2.
تُرجع طريقة splice () دائمًا صفيفًا يحتوي على عناصر تمت إزالتها من الصفيف الأصلي ، وإذا لم يتم حذف أي عناصر ، يتم إرجاع صفيف فارغ.
var arr = [1،3،5،7،9،11] ؛ var arrremoved = arr.splice (0،2) ؛ console.log (arr) ؛ // [5 ، 7 ، 9 ، 11] console.log (arrremoved) ؛ // [1 ، 3] var arrremoved2 = arr.splice (2،0،4،6) ؛ console.log (arr) ؛ // [5 ، 7 ، 4 ، 6 ، 9 ، 11] console.log (arrremoved2) ؛ // [] var arrremoved3 = arr.splice (1،1،2،4) ؛ console.log (arr) ؛ // [5 ، 2 ، 4 ، 4 ، 6 ، 9 ، 11] console.log (arrremoved3) ؛ // [7]
9. indexof () و LastIndexof ()
indexof (): يتلقى معلمتين: العنصر المطلوب العثور عليه وفهرس (اختياري) يشير إلى موقع نقطة بدء البحث. حيث ، ابحث إلى الوراء من بداية الصفيف (الموضع 0).
LastIndExof: يتلقى معلمتين: العنصر المطلوب العثور عليه وفهرس (اختياري) يشير إلى موقع نقطة بدء البحث. حيث ، ابدأ في التطلع من نهاية الصفيف.
تُرجع كلتا الطريقتين موضع العنصر المراد العثور عليه في الصفيف ، أو العودة 1 إذا لم يتم العثور عليها. عند مقارنة المعلمة الأولى مع كل عنصر في الصفيف ، يتم استخدام مشغل التقارب.
var arr = [1،3،5،7،7،5،3،1] ؛ console.log (arr.indexof (5)) ؛ //2console.log(arr.lastindexof(5)) ؛ //5console.log(arr.indexof(5،2)) ؛ //2console.log(arr.lastindexof(5،4)) ؛ //2console.log(arr.indexof("5 ")) ؛ //-110. foreach ()
foreach (): يعبر الصفيف ويدير الوظيفة المحددة على كل عنصر في الصفيف. هذه الطريقة ليس لها قيمة إرجاع. المعلمات كلها أنواع الوظائف ، وهناك معلمات تم تمريرها افتراضيًا. المعلمات هي: محتوى الصفيف الذي تم اجتيازه ؛ فهرس الصفيف المقابل ، الصفيف نفسه.
var arr = [1 ، 2 ، 3 ، 4 ، 5] ؛ arr.foreach (الوظيفة (x ، الفهرس ، a) {console.log (x + '|11. الخريطة ()
MAP (): يشير إلى "الخريطة" ، التي تدير وظيفة معينة على كل عنصر في الصفيف ، وإرجاع المصفوفة المكونة من نتيجة كل استدعاء دالة.
يستخدم الكود التالي طريقة الخريطة لتربط كل رقم في الصفيف.
var arr = [1 ، 2 ، 3 ، 4 ، 5] ؛ var arr2 = arr.map (function (item) {return item*item ؛}) ؛ console.log (arr2) ؛ // [1 ، 4 ، 9 ، 16 ، 25]12. مرشح ()
Filter (): وظيفة "Filter" ، يقوم كل عنصر في الصفيف بتشغيل وظيفة معينة ويعيد صفيفًا يلبي شروط التصفية.
var arr = [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10] ؛ var arr2 = arr.filter (function (x ، index) {return index ٪ 3 === 0 || x> = 8 ؛}) ؛ console.log (arr2) ؛ // [1 ، 4 ، 7 ، 8 ، 9 ، 10]13. كل ()
كل (): يحدد ما إذا كان كل عنصر في الصفيف يفي بالشرط. فقط عندما تفي جميع العناصر بالشرط ، سيتم إرجاع الشرط.
var arr = [1 ، 2 ، 3 ، 4 ، 5] ؛ var arr2 = arr.every (function (x) {return x <10 ؛}) ؛ console.log (arr2) ؛ // truevar arr3 = arr.every (function (x) {return x <3 ؛}) ؛ console.log (arr3) ؛ // خطأ شنيع14. بعض ()
بعض (): يحدد ما إذا كانت هناك عناصر في الصفيف تلبي الشروط. طالما أن أحدهم يفي بالظروف ، فسوف يعود بشكل صحيح.
var arr = [1 ، 2 ، 3 ، 4 ، 5] ؛ var arr2 = arr.some (function (x) {return x <3 ؛}) ؛ console.log (arr2) ؛ // truevar arr3 = arr.some (function (x) {return x <1 ؛}) ؛ console.log (arr3) ؛ // خطأ شنيع15. اختزال () واخفض ()
تنفذ كلتا الطريقتين التكرار على جميع عناصر الصفيف ثم بناء قيمة نهائية تم إرجاعها. تبدأ طريقة التخفيض () من العنصر الأول من الصفيف وتمر عبرها واحدًا تلو الآخر. يبدأ التخفيض () من العنصر الأخير من الصفيف ويمر عبر العنصر الأول.
تتلقى كلتا الطريقتين معلمتين: وظيفة تسمى كل عنصر و (اختياري) كقيمة أولية لقاعدة الدمج.
تم تمرير الوظيفة التي تم تمريرها لتقليل () و تخفيضها () 4 معلمات: القيمة السابقة ، والقيمة الحالية ، وفهرس العنصر ، وكائن الصفيف. سيتم تمرير أي قيمة يتم إرجاعها بواسطة هذه الوظيفة تلقائيًا إلى العنصر التالي باعتباره المعلمة الأولى. يحدث التكرار الأول على المدة الثانية من الصفيف ، وبالتالي فإن المعلمة الأولى هي المصطلح الأول من الصفيف ، والمعلمة الثانية هي المصطلح الثاني للمصفوفة.
يستخدم الكود التالي تخفيض () لتنفيذ مجموع الصفيف ، ويتم إضافة القيمة الأولية 10 إلى الصفيف في البداية.
VAR DATIORS = [1،2،3،4،5] ؛ var sum = values.reduceright (function (prev ، cur ، index ، array) {return prev + cur ؛} ، 10) ؛ console.log (sum) ؛ // 25ما ورد أعلاه عبارة عن مجموعة كاملة من أساليب صفيف JavaScript التي قدمها المحرر (الموصى بها). آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!