--- id: 587d7b86367417b2b2512b3b title: Catch Off By One Errors When Using Indexing challengeType: 1 videoUrl: '' localeTitle: القبض عن طريق واحدة من الأخطاء عند استخدام الفهرسة --- ## Description
Off by one errors (تسمى أحيانًا OBOE) عند محاولة استهداف فهرس معين لسلسلة أو صفيف (لتقسيم شريحة أو الوصول إليها) ، أو عند التكرار فوق مؤشراتها. تبدأ فهرسة جافا سكريبت في الصفر ، وليس واحدة ، مما يعني أن الفهرس الأخير يكون دائمًا أقل من طول العنصر. إذا حاولت الوصول إلى فهرس مساوٍ للطول ، فقد يلقي البرنامج خطأ مرجع "فهرسة خارج النطاق" أو يطبع undefined . عند استخدام سلسلة أو طرق صفيف تأخذ نطاقات الفهرس كوسيطة ، فإنها تساعد على قراءة الوثائق وفهم ما إذا كانت شاملة (العنصر الموجود في الفهرس المعين هو جزء مما تم إرجاعه) أم لا. في ما يلي بعض الأمثلة على أخطاء واحدة:
let alphabet = "abcdefghijklmnopqrstuvwxyz"؛
دعونا لين = alphabet.length.
لـ (let i = 0؛ i <= len؛ i ++) {
// حلقات واحدة عدة مرات في النهاية
console.log (الأبجدية [أنا])؛
}
لـ (let j = 1؛ j <len؛ j ++) {
// يكرر مرات قليلة جدًا ويفتقد الحرف الأول في الفهرس 0
console.log (الأبجدية [ي])؛
}
لـ (let k = 0؛ k <len؛ k ++) {
// يوافق Goldilocks - وهذا هو الصحيح
console.log (الأبجدية [ك])؛
}
## Instructions
إصلاح أخطاء الفهرسة في الدالة التالية بحيث يتم طباعة كافة الأرقام من 1 إلى 5 إلى وحدة التحكم.
## Tests
```yml tests: - text: يجب أن تقوم التعليمات البرمجية بتعيين الشرط الأولي للحلقة بحيث يبدأ في الفهرس الأول. testString: 'assert(code.match(/i\s*?=\s*?0\s*?;/g).length == 1, "Your code should set the initial condition of the loop so it starts at the first index.");' - text: يجب أن تقوم التعليمات البرمجية الخاصة بك بإصلاح الشرط الأولي للحلقة بحيث يبدأ الفهرس عند 0. testString: 'assert(!code.match(/i\s?=\s*?1\s*?;/g), "Your code should fix the initial condition of the loop so that the index starts at 0.");' - text: يجب أن تحدد شفرتك حالة المحطة الطرفية للحلقة بحيث تتوقف عند الفهرس الأخير. testString: 'assert(code.match(/i\s*?<\s*?len\s*?;/g).length == 1, "Your code should set the terminal condition of the loop so it stops at the last index.");' - text: يجب أن تقوم تعليماتك البرمجية بإصلاح حالة الحلقة الطرفية بحيث تتوقف عند 1 قبل الطول. testString: 'assert(!code.match(/i\s*?<=\s*?len;/g), "Your code should fix the terminal condition of the loop so that it stops at 1 before the length.");' ```
## Challenge Seed
```js function countToFive() { let firstFive = "12345"; let len = firstFive.length; // Fix the line below for (let i = 1; i <= len; i++) { // Do not alter code below this line console.log(firstFive[i]); } } countToFive(); ```
## Solution
```js // solution required ```