* Use dfn tags * remove misused <dfn> tags * Revert "remove misused <dfn> tags" This reverts commit b24968a96810f618d831410ac90a0bc452ebde50. * Update curriculum/challenges/english/01-responsive-web-design/basic-html-and-html5/fill-in-the-blank-with-placeholder-text.english.md Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * Make "array" lowercase Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * Fix dfn usage * Address last dfn tags
2.8 KiB
2.8 KiB
id, title, challengeType, forumTopicId
id | title | challengeType | forumTopicId |
---|---|---|---|
587d7b86367417b2b2512b3b | Catch Off By One Errors When Using Indexing | 1 | 301189 |
Description
undefined
.
When you use string or array methods that take index ranges as arguments, it helps to read the documentation and understand if they are inclusive (the item at the given index is part of what's returned) or not. Here are some examples of off by one errors:
let alphabet = "abcdefghijklmnopqrstuvwxyz";
let len = alphabet.length;
for (let i = 0; i <= len; i++) {
// loops one too many times at the end
console.log(alphabet[i]);
}
for (let j = 1; j < len; j++) {
// loops one too few times and misses the first character at index 0
console.log(alphabet[j]);
}
for (let k = 0; k < len; k++) {
// Goldilocks approves - this is just right
console.log(alphabet[k]);
}
Instructions
Tests
tests:
- text: Your code should set the initial condition of the loop so it starts at the first index.
testString: assert(code.match(/i\s*?=\s*?0\s*?;/g).length == 1);
- text: Your code should fix the initial condition of the loop so that the index starts at 0.
testString: assert(!code.match(/i\s?=\s*?1\s*?;/g));
- text: Your code should set the terminal condition of the loop so it stops at the last index.
testString: assert(code.match(/i\s*?<\s*?len\s*?;/g).length == 1);
- text: Your code should fix the terminal condition of the loop so that it stops at 1 before the length.
testString: assert(!code.match(/i\s*?<=\s*?len;/g));
Challenge Seed
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
function countToFive() {
let firstFive = "12345";
let len = firstFive.length;
// Fix the line below
for (let i = 0; i < len; i++) {
// Do not alter code below this line
console.log(firstFive[i]);
}
}
countToFive();