1. أساليب indexof و lastIndexof:
نظرًا لأن IE7 ستقوم بالإبلاغ عن خطأ باستخدام IndexOF على كائن صفيف ، فمن الضروري إعادة كتابة أحد التوافق.
نسخة الكود كما يلي:
Array.Prototype.lastIndexof (العنصر ، الفهرس) {
var n = this.length ، i = (index == null || index> n-1)؟ n-1: index ؛
إذا (i <0) i = n+i ؛
لـ (؛ i> = 0 ؛ i--)
إذا (هذا [i] === العنصر) // consolidar الحكم ، indexof ، lastIndexof
العودة أنا.
العودة -1 ؛
}
2. طريقة Shuffle: خلط الصفيف.
نسخة الكود كما يلي:
وظيفة Shuffle (Target) {
var i = target.length ، j ، temp ؛
لـ (؛ i> 0 ؛ j = parseint (math.random () * i) ، x = target [-i] ، target [i] = target [j] ، target [j] = x) {}
// بافتراض طول = 10 ، ثم بعد Math.Random ()*10-> [0،10) ، Parseint ، [0،9] ، حدد بشكل عشوائي وتبادله مع العنصر الأخير في الصفيف. الحلقة الثانية ، [0،8] ، تبادل مع المدة قبل الأخيرة من المصفوفة.
الهدف الإرجاع ؛
}
3. عملية تسطيح للمصفوفة: تسطح ، أعد صفيف أحادي البعد
نسخة الكود كما يلي:
وظيفة Flatten (arr) {
var result = [] ؛
arr.foreach (وظيفة (عنصر) {
if (array.isarray (item)) result.concat (flatten (item)) ؛
نتيجة أخرى. push (item) ؛
}) ؛
نتيجة العودة
}
4. طريقة فريدة: تشغيل إلغاء البيانات الصفيف
هذه الطريقة هي المقابلة التي يحب القائم بإجراء المقابلة أن تسأل عنها ، لأنها تحتوي على طرق تنفيذ متعددة ، والأكثر شيوعًا هي الاثنين للحلقات. الشيء الأكثر شيوعًا الذي أعرفه هو استخدام كائن A ومن ثم A for loop arr. في كل مرة في حالة وجود (A [i [i]]) ، وإذا لم يكن موجودًا ، فسيتم دفعه إلى نتيجة الصفيف المحددة حديثًا. يثبت الوجود ، يكرر ، لذلك ليست هناك حاجة للدفع في النتيجة. هذا الحل ، لـ "123" ، 123 ، سيعتبر نفسه. في الواقع ، واحدة هي سلسلة والآخر رقم ، ولا ينبغي اعتباره كما هو.
لذلك تظهر الطريقة التالية: [1 ، "1" ، "1"]
نسخة الكود كما يلي:
if ((typeof obj [array [i]])! = (typeof array [i]) || obj [array [i]]! = Array [i]) {
A.Push (Array [i]) ؛
OBJ [Array [i]] = Array [i] ؛
}
// أولاً حدد ما إذا كانت الأنواع متشابهة. إذا كانت هي نفسها ، فحدد ما إذا كانت قيمها متساوية. إذا لم تكن متساوية ، فسيتم حفظها. إذا كانت متساوية ، فسوف يثبتون أن هذه القيمة كانت موجودة من قبل.
إذا كانت الأنواع مختلفة ، فهناك حالتان هنا.
في الحالة الأولى ، قام OBJ بالفعل بحفظ هذه البيانات من قبل ، على سبيل المثال: OBJ [123] = 123 ، الآن صفيف [i] = "123". في هذا الوقت ، يعد Typeof OBJ [Array [i]]) رقمًا ، و typeof array [i] عبارة عن سلسلة ، لذلك يتم تخزينها في الصفيف.
الحالة الثانية هي أن OBJ لم يحفظ هذه البيانات حتى الآن ، على سبيل المثال: Array [i] = "123" ، OBJ ["123"] = غير محدد. في هذا الوقت ، يكون Typeof OBJ [Array [i]]) من النوع غير محدد = غير محدد ، والذي لا يساوي مجموعة نوعية [i] ويتم تخزينه في الصفيف.
يمكن أن تحل هذه الطريقة الموقف الذي تكون فيه السلاسل والأرقام متماثلة ، ولكن لا يمكن حل الموقف الذي تكون فيه الكائنات متماثلة. على سبيل المثال: a = {1: 2} ، b = {2: 1} ؛
عندما تكون الحلقة الأولى ، typeof obj [a] = غير محدد ، typeof a = كائن. إيداع OBJ [a] = a. في الواقع ، obj [object] = a ؛
في الحلقة الثانية ، فإن typeof obj [b] يساوي typeof obj [object] ، والذي هو في الواقع نوع A = كائن ، typeof b = كائن. لذلك ، فإنه يدخل OBJ [Array [i]]! = صفيف [i] | ، أي ، obj [b]-> obj [object]-> a! = ب ، مودعة حتى
OBJ [b] = b ؛ وهذا هو ، obj [object] = b ؛ الكتابة فوق OBJ السابقة [كائن] = a ؛
في هذه الحالة ، ستظهر جميع الكائنات ، وسيتم تخزين قيمة الكائن الأخيرة فقط.
عند النظر في الكائنات ، أستخدم الطريقة التالية:
نسخة الكود كما يلي:
لـ (var i = 0 ؛ i <temp.length ؛ i ++) {
لـ (var j = i+1 ؛ j <temp.length ؛ j ++) {
if (temp [i] === temp [j]) {
Temp.Splice (J ، 1) ؛
ي-؛
}
}
}
عودة درجة الحرارة.
5. فرز الصفيف: طريقة الفرز. إذا كان الكائن الذي تريد فرزه هو كائن ، فيمكنك كتابة مقارنة (A ، B) {if (a.age> b.age) return 1 ؛ else report -1 ؛} ، a.sort (مقارنة).
6.min إرجاع الحد الأدنى لقيمة المصفوفة: return Math.Min.Apply (0 ، Array) ؛
7. Unsonft لا يعيد طول الصفيف تحت IE6،7.
نسخة الكود كما يلي:
إذا كان ([] تنفيذ البيان IF
{
var _unshift = array.prototype.unshift ؛ // وظيفة الاختطاف.
Array.Prototype.unshift = function () {
_unshift.apply (هذا ، الحجج) ؛
إرجاع هذا. الطول ؛
}
}
8.Splice في حالة معلمة واحدة ، المعلمة الثانية الافتراضية لـ IE8 والإصدارات التالية هي 0 ، في حين أن المتصفحات الأخرى هي طول الصفيف.
نسخة الكود كما يلي:
إذا ([1،2،3] .Splice (1) .Length == 0) // IE8 وستكون الإصدارات التالية مساوية لـ 0 ، وستكون الإصدارات الأخرى مساوية لـ 3 ، أدخل إذا
{
var _splice = array.prototype.splice ؛
Array.Prototype.Splice = Function (A) {
إذا (الوسيطات. length == 1) // إذا كانت هناك معلمة واحدة فقط
{
return _splice.call (هذا ، a ، this.length) ؛
}آخر{
إرجاع _splice.apply (هذا ، الحجج) ؛
}
}
}
ستغير هذه الطريقة خيارات الصفيف ، لذا فإن الدفع ، والبوب ، والتحول ، وعدم الالتفاف للمصفوفة (ستعدل هذه الطرق أيضًا خيارات الصفيف) هذه الطريقة لتنفيذها.
هنا مكان للملاحظة:
نسخة الكود كما يلي:
var color = new Array ('Red' ، 'Blue' ، 'Yellow' ، 'Black') ؛
var color2 = color.splice (2،0 ، 'brown' ، 'Pink') ؛
تنبيه (اللون) ؛ // الأحمر ، الأزرق ، البني ، الوردي ، الأصفر ، الأسود ، على الخيار الأصفر ، ابدأ العملية ، إذا كان الحذف هو 0 ، يتم إدراج الخيار المضافة قبل الأصفر. يتذكر.
هنا ، يرجى التحقق من الفرق بين لصق وشريحة ، وقيمة الإرجاع ، وتأثيرها على الصفيف الأصلي.
ما سبق هو نسخة مبسطة من محتوى هذا القسم. على الرغم من أنه مبسط ، فإن النقاط الرئيسية كلها. آمل أن يكون ذلك مفيدًا للجميع عند قراءة هذا القسم.