على الرغم من أن المصفوفات هي كائنات في JavaScript ، إلا أنه لا ينصح باستخدام A في حلقة لاجتياز صفيف. في الواقع ، هناك العديد من الأسباب لمنعنا من استخدام حلقة في المصفوفات.
نظرًا لأن For in loop ستعمل جميع الخصائص على سلسلة النماذج الأولية ، والطريقة الوحيدة لمنعها هي استخدام Hasownproperty ، والتي ستكون أبطأ بكثير من المعدل الطبيعي للحلقة.
اجتياز
للحصول على الأداء الأمثل لتجاوز الصفيف ، فإن أفضل طريقة هي استخدام الحلقة الكلاسيكية.
نسخة الكود كما يلي:
var list = [1 ، 2 ، 3 ، 4 ، 5 ، ...... 100000000] ؛
لـ (var i = 0 ، l = list.length ؛ i <l ؛ i ++) {
console.log (قائمة [i]) ؛
}
هناك خدعة إضافية هنا ، والتي تتمثل في تخزين طول المصفوفة بواسطة l = list.length.
على الرغم من أن طول الممتلكات محدد في الصفيف نفسه ، لا يزال هناك تكاليف في كل اجتياز للحلقة. على الرغم من أن أحدث محركات JavaScript قد أجرت تحسينات أداء لهذا الموقف ، لا يمكنك ضمان أن رمز JavaScript الخاص بك سيتم تشغيله دائمًا على هذا المتصفح.
في الواقع ، تكون الحلقات التي لا تحتوي على أطوال ذاكرة التخزين المؤقت أبطأ بكثير من الحلقات ذات أطوال ذاكرة التخزين المؤقت.
سمة الطول
على الرغم من أن سمة الطول تُرجع فقط عدد العناصر الموجودة في الصفيف من خلال طريقة getter ، إلا أنه يمكن اقتطاع الصفيف بواسطة طريقة Setter.
نسخة الكود كما يلي:
var foo = [1 ، 2 ، 3 ، 4 ، 5 ، 6] ؛
foo.length = 3 ؛
فو // [1 ، 2 ، 3]
foo.length = 6 ؛
foo.push (4) ؛
فو // [1 ، 2 ، 3 ، غير محدد ، غير محدد ، غير محدد ، 4]
سيؤدي تعيين رقم أصغر إلى سمة الطول إلى اقتطاع المصفوفة ، وإذا تم تعيين رقم أكبر ، فلن يقتصر الصفيف.
لخص
من أجل الأداء الأمثل ، يوصى باستخدام حلقة لـ A for A في حلقة أثناء التخزين المؤقت لسمة الطول.
هناك أيضًا كائنات صفيف ليس لها طريقة ، فقط طول سمة فريد. كائنات السلسلة لها طرق طول ~~