--- title: Catch Off By One Errors When Using Indexing localeTitle: القبض عن طريق واحدة من الأخطاء عند استخدام الفهرسة --- ## القبض عن طريق واحدة من الأخطاء عند استخدام الفهرسة ### مبادئ بسبب الطريقة التي تعمل بها فهارس جافا سكريبت `firstFive` لديها **خمسة عناصر** لكنها مفهرسة من **0 إلى 4** ! `console.log(len); // 5 console.log(firstFive[0]); // 1 /**/ console.log(firstFive[4]); // 5 console.log(firstFive[5]); // undefined ` يجب أن يعطيك ما يكفي لإدراك حدود `firstFive` . توجيه انتباهك إلى الحلقة. ماذا تعمل، أو ماذا تفعل؟ يمكنك محاولة تصحيح الأخطاء لمعرفة ذلك! ### التصحيح يتم منحك هذا الرمز: ` for (let i = 1; i <= len; i++) { console.log(firstFive[i]); } ` لتصحيح هذه القطعة من التعليمات البرمجية ، استخدم `console.clear()` . ما هو أفضل مكان لذلك؟ الجواب الصحيح قبل `for` بيان! ` console.clear(); for (let i = 1; i <= len; i++) { console.log(firstFive[i]); } ` إخراج وحدة التحكم: ` Console was cleared. 2 3 4 5 undefined ` ### تحليل دراسة الانتاج. تحت هذه الشروط ، تقوم الحلقة أولاً بطباعة العنصر الموضع في 1… وهو 2! يحاول أيضًا طباعة العنصر المفهرس في 5 وهو غير `undefined` . يمكن اعتبار هذا هو الهدف من هذا التحدي. إبقاء `console.log()` و `console.clear()` الحالية. سوف تساعدك على فهم كيفية عمل التعليمات البرمجية الخاصة بك. ### حل الطريقة الأكثر مباشرة لإصلاح هذا هي تغيير الشروط (). اجعل `i` تبدأ عند 0. كذلك **لا** يجب تنفيذ الحلقة لـ i = = 5. وبعبارة أخرى ، يجب أن تكون العلاقة بين `i` و `len` `false` عند i == 5. يمكن تحقيق ذلك باستخدام `i < len` (Is 5